ScrollView alawys прокручивается на дно

168
22

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


 <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. К сожалению, это не сработало. Он прокручивается вниз, но не всегда, и не всегда на дно. Любые подсказки?

спросил(а) 2010-05-14T11:13:00+04:00 10 лет, 11 месяцев назад
1
Решение
240

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

scroller.post(new Runnable() { 
public void run() {
scroller.fullScroll(ScrollView.FOCUS_DOWN);
}
});

ответил(а) 2010-08-01T02:10:00+04:00 10 лет, 8 месяцев назад
122

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

scroller.post(new Runnable() {

public void run() {
scroller.scrollTo(text.getMeasuredWidth(), text.getMeasuredHeight());
}
});

ответил(а) 2010-05-19T14:41:00+04:00 10 лет, 10 месяцев назад
44

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


@ViewById
ScrollView myScrollView;

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

@UiThread(delay=200)
void scrollToEnd() {
myScrollView.fullScroll(ScrollView.FOCUS_DOWN);
}

ответил(а) 2014-05-18T14:58:00+04:00 6 лет, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема