2013-02-10 23 views
10

Ich baue eine Chat-ähnliche Anwendung, die Text anzeigt, den der Benutzer mit einem Scrollview in den Bildschirm eingibt. Was ich mache, ist das automatische Scrollen der Scrollview nach unten, wenn mehr Text an den Bildschirm angehängt wird. Ich verwendeScrollview scrollt nicht vollständig herunter

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

Dies scheint zu funktionieren, auch wenn aus irgendeinem Grund, weil die Tastatur in der Regel auf dem Bildschirm ist beim Chatten, wenn die Scroll nach unten scrollt es nicht vollständig - die neueste Textview hinzugefügt wird nicht angezeigt (Sie müssen manuell zum neuesten scrollen). Wie gehe ich vor, um das zu beheben?

Antwort

24

Ich sah mich um, und festgestellt, dass einige other people in das gleiche Problem geraten sind.

löste ich dieses Problem dieses Stück Code verwendet:

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

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

Hoffentlich jemand da draußen helfen kann!

+0

hey ich bin mit dem gleichen Problem konfrontiert, aber nicht in der Lage zu lösen, indem Sie Ihren Code versuchen ...... können Sie bitte helfen? – nidhi

+0

Großartig! Das 100% funktioniert! –

+0

das funktionierte auch für mich, gute Antwort –

12

Es ist spät, aber kann jemand mit diesem Problem helfen .. Es dauert etwa 200 Minuten, um das letzte Element hinzuzufügen und es für eine ScrollView zu aktualisieren, so wird dies sicherlich funktionieren.

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(); 
} 

Rufen Sie einfach scrollDown(); nach dem Hinzufügen von Element zu ScrollView.

+4

Sie könnten auch 'my_scrollview.postDelayed (new Runnable() {...}, 200)' verwenden – Wirling

Verwandte Themen