ScrollView алавы прокручивают вниз - PullRequest
14 голосов
/ 14 мая 2010

Я определил вид прокрутки с текстом в моем макете:

 <ScrollView android:fillViewport="true"
     android:layout_marginBottom="50dip"
     android:id="@+id/start_scroller"
     android:layout_height="fill_parent"
     android:layout_width="fill_parent"
     android:fadingEdge="none">
 <TextView  
    android:id="@+id/text"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" >
 </TextView>
 </ScrollView>

Я добавляю текст в этот ScrollView следующим способом:

public void writeToLogView(String textMsg) {
   if (text.getText().equals("")) {
       text.append(textMsg);
   } else {
    text.append("\n" + textMsg);
    scroller.scrollBy(0, 1000000);
   }
}

Как видите, я добавляю текст и пытаюсь прокрутить до конца ScrollView. К сожалению, это не сработало правильно. Он прокручивается вниз, но не всегда и не всегда вниз. Есть намеки?

Ответы [ 3 ]

30 голосов
/ 01 августа 2010

Или после изменения размера вида при использовании scrollView:

scroller.post(new Runnable() { 
    public void run() { 
        scroller.fullScroll(ScrollView.FOCUS_DOWN); 
    } 
}); 
7 голосов
/ 19 мая 2010

После добавления текста, попробуйте использовать размеры вашего TextView , чтобы вычислить, где вы должны прокрутить вместо некоторой константы, например:

scroller.post(new Runnable() {

    public void run() {
        scroller.scrollTo(text.getMeasuredWidth(), text.getMeasuredHeight());
    }
});
0 голосов
/ 18 мая 2014

Для тех, кто использует Аннотации Android , вы можете сделать это следующим образом:

@ViewById
ScrollView myScrollView;

@AfterViews
protected void init() {
    scrollToEnd();
}

@UiThread(delay=200)
void scrollToEnd() {
    myScrollView.fullScroll(ScrollView.FOCUS_DOWN);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...