2013-02-10 48 views
10

我正在構建一個類似聊天的應用程序,用於顯示用戶使用滾動視圖輸入到屏幕的文本。我正在做的是隨着更多文本被添加到屏幕上,自動滾動滾動視圖。我使用滾動查看不完全向下滾動

ScrollView my_scrollview = (ScrollView) findViewById(R.id.scroller); 
my_scrollview.fullScroll(ScrollView.FOCUS_DOWN); 

這似乎是工作,但由於某種原因,因爲鍵盤通常是在屏幕上一邊聊天,當滾動視圖向下滾動它並不能完全 - 沒有顯示增加了最新的TextView(你必須手動向下滾動到最新的)。我該如何解決這個問題?

回答

24

我環顧四周,發現一些other people已經遇到了同樣的問題。

我使用的代碼這一塊解決了這個問題:

final ScrollView scrollView = (ScrollView) findViewById(R.id.scroll_view); 

scrollView.post(new Runnable() 
{ 
    public void run() 
    { 
     scrollView.fullScroll(View.FOCUS_DOWN); 
    } 
}); 

希望這可以幫助別人那裏!

+0

嘿我我面臨同樣的問題,但無法通過嘗試你的代碼解決......你能幫助嗎? – nidhi 2013-09-05 11:08:20

+0

太棒了!這100%的作品! – 2013-10-31 10:35:05

+0

那也適合我,很好的回答 – 2016-02-22 18:40:02

12

它的後期,但可能會幫助這個問題的一些.. 它需要大約200毫秒添加最後一個元素,並更新爲一個scrollView所以這一定會工作。

void scrollDown() 
{ 
    Thread scrollThread = new Thread(){ 
     public void run(){ 
      try { 
       sleep(200); 
       ChatActivity.this.runOnUiThread(new Runnable() { 
        public void run() { 
         myScrollView.fullScroll(View.FOCUS_DOWN); 
        }  
       }); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    scrollThread.start(); 
} 

在向scrollView添加元素後,請致電scrollDown();

+4

你也可以使用'my_scrollview.postDelayed(new Runnable(){...},200)' – Wirling 2015-05-04 12:13:17