2013-02-10 19 views
10

Kullanıcı girişlerini ekrana kaydırma görünümünü kullanarak metin olarak görüntüleyen sohbet benzeri bir uygulama yapıyorum. Yaptığım şey, ekrana daha fazla metin eklendiğinde kaydırma görünümünü otomatik olarak kaydırmaktır. ilave yeni TextView'un gösterilmez (- o aşağı Scrollview kaydırır tamamen değil yaptığında, sohbet sırasında klavye ekranda genellikle çünkü nedense rağmen,Scrollview tamamen aşağı kaydırmıyor

Bu iş gibi görünüyor
ScrollView my_scrollview = (ScrollView) findViewById(R.id.scroller); 
my_scrollview.fullScroll(ScrollView.FOCUS_DOWN); 

kullanıyorum en yenisine manuel olarak kaydırmanız gerekir). Bunu düzeltmek için nasıl giderim?

cevap

24

Etrafa baktım ve bazı other people'un aynı soruna sahip olduğunu gördüm.

Ben bu kod parçası kullanarak bu sorunu çözdü:

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

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

Umarım bu orada birilerine yardımcı olabilir!

+0

hey aynı problemle karşılaşıyorum ama kodunuzu deneyerek çözemiyorum ...... size yardımcı olabilir misiniz? – nidhi

+0

Harika! Bu% 100 çalışıyor! –

+0

Ayrıca benim için çalıştı, büyük cevap –

12

Geç ancak bu sorunla bir tane yardımcı olabilir .. Son öğeyi eklemek ve bir scrollView için güncelleştirmesi yaklaşık 200 miniseconds alır, bu kesinlikle çalışır.

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

Sadece Scrollview için eleman ekledikten sonra scrollDown(); diyoruz.

+4

Ayrıca aşağıdakileri de kullanabilirsiniz: my_scrollview.postDelayed (yeni Runnable() {...}, 200) – Wirling