在android中自动滚动textview

时间:2013-02-07 20:06:03

标签: java android

我正在构建一个类似聊天的应用程序,使用滚动视图显示用户输入到屏幕的文本。我想做的是使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>

我该怎么做呢?我尝试将布局的重力设置为“底部”,但这不能正常工作(滚动视图向下滚动时向上移动的文本无法再次查看)。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如果要滚动到绝对底部(添加新TextView的位置),请在添加TextView时在ScrollView上使用fullScroll

ScrollView my_scrollview = (ScrollView) findViewById(R.id.scroller);
my_scrollview.fullScroll(ScrollView.FOCUS_DOWN);

如果您想要从用户正在查看的当前位置滚动相对,我会尝试类似smoothScrollByscrollBy

的内容
/* 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);
    }
});