2013-02-10 32 views
10

Sto costruendo un'applicazione simile a una chat che visualizza il testo che l'utente immette sullo schermo utilizzando una scrollview. Quello che sto facendo è lo scorrimento automatico della scrollview verso il basso man mano che più testo viene aggiunto allo schermo. Sto usandoScrollview non scorrere completamente verso il basso

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

Questo sembra funzionare, anche se per qualche ragione, perché la tastiera è di solito sullo schermo durante una chat, quando i rotoli ScrollView giù lo fa non del tutto - la più recente TextView aggiunto non viene visualizzato (dovrai scorrere manualmente verso il basso fino a quello più recente). Come faccio a risolvere questo problema?

risposta

24

Mi sono guardato intorno e ho trovato che alcuni other people hanno avuto lo stesso problema.

Ho risolto questo problema utilizzando questo pezzo di codice:

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

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

Speriamo che questo può aiutare qualcuno là fuori!

+0

hey sto affrontando lo stesso problema ma non riesco a risolvere provando il tuo codice ...... puoi aiutarmi per favore? – nidhi

+0

Ottimo! Quel 100% funziona! –

+0

che ha funzionato anche per me, ottima risposta –

12

È tardi, ma può aiutare qualcuno con questo problema .. Ci vogliono circa 200 minuti per aggiungere l'ultimo elemento e aggiornarlo per una scrollView, quindi funzionerà sicuramente.

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

Basta chiamare scrollDown(); dopo l'aggiunta di elemento da ScrollView.

+4

Puoi anche usare 'my_scrollview.postDelayed (new Runnable() {...}, 200)' – Wirling

Problemi correlati