2011-03-07 17 views
20

Android uygulamasında bir metin görünümü içeren bir kaydırma görüşüm var. Bu metin görünümü, belirli aralıklarla sürekli olarak eklenmiş metin içerecektir. Kaydırma çalışmaları ve metin iyi bir ek oluşturur, ancak yapmak istediğim, metin eklendiğinde kaydırma görünümünün otomatik olarak aşağı kaydırılmasıdır. Altta yeni metin eklendiğinde, otomatik olarak aşağı doğru eşleşir ve eski metin yukarıdan dışarı itilir. Daha da iyi olan şey, kaydırma görünümünün altına metin eklemek ve eski metni yukarı doğru ittirmek, ancak her seferinde bir şeydir. Metin eklendiğindeMetin eklendiğinde otomatik kaydırma otomatik olarak kaydırılıyor

+2

Şey ... bunu dikkate almayın. Aptalca ben yerçekimi ilk bakışta metin görünümünde (alttan görünüşe) "alt" olarak ayarlamıyorum. Bunu yapmak yeni metni en altta tutar ve yeni metne göre kaydırır. Yuppi! – AndroidHopeful

+3

çözümünüz hakkında bir cevap yazabilir ve ardından seçili olarak işaretleyebilirsiniz. Diğer insanlar aynı problemle karşılaştıklarında, bir çözümün olduğunu görecekler. – Shade

+2

bu harika bir çözümdür ve cevap olarak göndermelisiniz. –

cevap

20
<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:fillViewport="true" 
    > 
    <TextView 
     android:id="@+id/statusText" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" /> 
</ScrollView> 
+0

Teşekkürler, bu benim için çalıştı. – BostonGeorge

2

Sadece alta bütün ScrollView ilerleyebilirsiniz.

textView.append(text); 
scroll.fullScroll(View.FOCUS_DOWN) 
+0

Bir scroll.post çağrısının içinde fullScroll'u çağırmayı unutmayın –

1
textView.append(text); 
scroll.fullScroll(View.FOCUS_DOWN) 

bu sorunu verecektir, bu aşırı üst kadar kaydırma olmaz dolayı android:layout_gravity="bottom"

+0

mükemmel çözüm, teşekkürler –

+0

Bu, yanıt olarak işaretlenmelidir. – busuu

6

Ben yerçekimi ile çözüm denedim ama sonuç gerçek metnin altında boş bir alan bir sürü oldu aşağıya kaydırıldığında.

Bu başka bir yoldur.

<ScrollView 
    android:id="@+id/scrollView1" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:fillViewport="true" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</ScrollView> 

Ve

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

      //some code here 

     ScrollView scrollView1 = (ScrollView) findViewById(R.id.scrollView1); 
     TextView textView1 = (TextView) findViewById(R.id.textView1); 
     textView1.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void afterTextChanged(Editable arg0) { 
      scrollView1.fullScroll(ScrollView.FOCUS_DOWN); 
      // you can add a toast or whatever you want here 
     } 

     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, 
       int arg2, int arg3) { 
      //override stub 
     } 

     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, 
       int arg3) { 
      //override stub 
     } 

    }) } 

Aslında ben uygulama metin her değiştiğinde, sadece eklenmez kayar şu an fark addTextChangedListener

define: Sen scrollview içinde TextView'un yerleştirebilirsiniz. Ancak benim için iyi çalışıyor.

+0

Bu benim için çalışan tek şey (API 23). 'Android: layout_gravity = "alt" hilesi, manuel olarak yukarı kaydırmamı sağladı ve metnin altına bol miktarda boş alan ekliyordu. Bu, boş alan eklemiyor ve normal olarak kaydırmaya izin veriyor. – Shlublu