我正在构建一个类似聊天的应用程序,使用滚动视图显示用户输入到屏幕的文本。我想做的是使scrollview自动滚动,因为更多文本被附加到屏幕上。 我正在使用textview来显示输入。 scrollview的xml部分如下:
<ScrollView
android:id="@+id/scroller"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/buttons"
>
<LinearLayout
android:id="@+id/start_chat"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
</LinearLayout>
</ScrollView>
我该怎么做呢?我尝试将布局的重力设置为“底部”,但这不能正常工作(滚动视图向下滚动时向上移动的文本无法再次查看)。
非常感谢任何帮助。
答案 0 :(得分:1)
如果要滚动到绝对底部(添加新TextView的位置),请在添加TextView时在ScrollView上使用fullScroll。
ScrollView my_scrollview = (ScrollView) findViewById(R.id.scroller);
my_scrollview.fullScroll(ScrollView.FOCUS_DOWN);
如果您想要从用户正在查看的当前位置滚动相对,我会尝试类似smoothScrollBy或scrollBy
的内容/* recently_added_textview being the TextView that was added to trigger this */
ScrollView my_scrollview = (ScrollView) findViewById(R.id.scroller);
int height = recently_added_textview.getHeight();
my_scrollview.smoothScrollBy(0, height);
/* x being 0 assuming you don't want to scroll left and right */
这样,如果用户正在阅读顶部或中间的某些内容,则不会将用户发送到ScrollView的底部。
答案 1 :(得分:0)
您可以在textview
中添加新聊天后添加此内容scroller.post(new Runnable() {
public void run() {
//ScrollView.FOCUS_DOWN if you want to scroll down
//ScrollView.FOCUS_UP if you want to scroll up
svComments.fullScroll(ScrollView.FOCUS_DOWN);
}
});