自动向下滚动文本视图

时间:2012-04-26 02:23:02

标签: android android-scrollbar

我的应用程序有3个组件,1个textview(inputType:textMultiline,滚动条:垂直,重力:bottom |右)在顶部,1个editview在中间,1个按钮在底部。当我在editview上输入内容并单击按钮时,编辑视图上显示的文本将显示在textview上。每次我点击确定,文本显示底部,显示的是前三个输入。我必须向下滚动textview才能看到我的最后一个输入。

现在,我希望我的用户在他们的textview上看到他们的最后一个输入。我想知道每次在其上输入新文本时是否存在用于文本视图的自动滚动的代码。我是开发Android应用程序的新手。谢谢!

4 个答案:

答案 0 :(得分:5)

当您将文本设置为textview时,只需设置文本。像

tv.setFocusable(true);

每当您在textview上更改字符串时,它都会自动关注您的视图。

如果您一次又一次地在文字视图中添加文字,那么您可以试试这个

    int scroll_amount = tv.getBottom();
    tv.scrollTo(0, scroll_amount);

希望它不会确定...

试试这个

    int scroll_amount = (int) (tv.getLineCount() * tv.getLineHeight()) - (tv.getBottom() - tv.getTop());
    tv.scrollTo(0, scroll_amount);

答案 1 :(得分:1)

您可以使用scrollView.scrollTo(x,y)自动滚动到您想要的位置。

/ <强> * 修改 * /

为scrollview创建自定义类

package com.android.mypackage
public class myScrollView extends ScrollView{
    private int maxY = 0;
    @Override
    protected void onScrollChanged(int x, int y, int oldx, int oldy) {
        super.onScrollChanged(x, y, oldx, oldy);
       if(y>maxY)
        maxY=y;
    }
    public void moveToEnd(){
        this.scrollTo(0, maxY);
    }
}

在布局xml中使用此自定义类,如下所示:

...
<com.android.mypackage.myScrollView
    android:id="@+id/my_scrollview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView .../>
</com.android.mypackage.myScrollView>
.....

当你按下Ok按钮时,只需调用函数myscrollViewObj.movetoEnd(); 它只是一个草案代码,仍未经过测试。

答案 2 :(得分:1)

我已经得到了答案!谢谢你给我一些想法。我将来也许可以使用它们。 @Bharat Sharma,你几乎得到了答案!谢谢!

public void onClick(View v) {
            // TODO Auto-generated method stub
            log.setText(log.getText() + "\n" +input.getText());

            if(log.getLineCount() > 5){
                scroll_amount = scroll_amount + log.getLineHeight();
                log.scrollTo(0, scroll_amount);
            }
        }

我在onCreate()之外调用了变量滚动量。再次感谢!

答案 3 :(得分:0)

就是这样。

public void onScrollDownClicked(View view) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        mTextView.scrollTo(0, mTextView.getLayout().getHeight() - mTextView.getHeight());
    }
}