我的应用程序上有 3 个组件,顶部有 1 个文本视图(输入类型:文本多行、滚动条:垂直、重力:底部|右侧),中间有 1 个编辑视图,底部有 1 个按钮。当我在编辑视图上键入内容并单击按钮时,编辑视图上写入的文本将显示在文本视图上。每次我点击确定时,文本都会显示底部,显示的是前三个输入。我必须向下滚动文本视图才能看到我最后的输入。
现在,我希望我的用户在他们的文本视图上看到他们的最后输入。我想知道每次我在其上输入新文本时是否有这样的代码可以自动向下滚动文本视图。我是开发安卓应用程序的新手。谢谢!
当您将文本设置为文本视图时,只需将 foucus 设置为它。
tv.setFocusable(true);
每当您在文本视图上更改字符串时,它都会自动聚焦您的视图。
如果您一次又一次地向文本视图添加文本,那么您可以尝试此操作
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);
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();这只是一个代码草案,尚未经过测试。
我已经得到了答案!谢谢你给我一些想法。我将来也许可以使用它们。@Bharat夏尔马,你几乎得到了答案!谢谢!
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()之外调用了变量滚动量。再次感谢!
这样。
public void onScrollDownClicked(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mTextView.scrollTo(0, mTextView.getLayout().getHeight() - mTextView.getHeight());
}
}