0

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

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

4

4 回答 4

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);
于 2012-04-26T04:12:31.497 回答
1

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

/ *编辑* /

为滚动视图创建自定义类

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>
.....

当您按下确定按钮时,只需调用函数 myscrollViewObj.movetoEnd(); 这只是一个草稿代码,还没有经过测试。

于 2012-04-26T02:43:43.450 回答
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() 之外调用了变量滚动量。再次感谢!

于 2012-04-26T12:08:13.580 回答
0

就是这个。

public void onScrollDownClicked(View view) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        mTextView.scrollTo(0, mTextView.getLayout().getHeight() - mTextView.getHeight());
    }
}
于 2018-05-24T12:00:01.827 回答