0

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

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

任何帮助是极大的赞赏。

4

2 回答 2

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 的底部。

于 2013-02-07T20:32:24.910 回答
0

您可以在文本视图中添加新聊天后添加它

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);
    }
});
于 2013-02-08T01:26:26.077 回答