我正在做一个计算器应用程序。
我有一个TextView,用户可以在其中编写数字以进行详细说明。
TextView位于HorizontalScrollView中。 HorizontalScrollView位于垂直LinearLayout内。 TextView是单行,当用户写入一个长号时,该数字就会出现在屏幕上。
TextView应该跟随用户添加的最后一个数字,这样他就可以在不滚动屏幕的情况下查看最后添加的数字。我不想要一个每秒重复滚动的自动滚动功能,我只想关注最后添加的数字。
这是TextView
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/numberDisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="0dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="16dp"
android:hint="0"
android:scrollHorizontally="true"
android:maxLines="1"
android:layout_gravity="right"
android:textSize="70sp" />
</HorizontalScrollView>
答案 0 :(得分:1)
试试这个:
在您的活动中为滚动视图和文本视图创建变量:
TextView textView;
HorizontalScrollView scrollView;
在onCreate()
中初始化它们:
scrollView = (HorizontalScrollView) findViewById(R.id.scrollView); // Add this id to xml
textView = (TextView) findViewById(R.id.numberDisplay);
每次更新文本视图的文本时,都会更新滚动视图的滚动位置:
scrollView.scrollTo(textView.getRight(), textView.getTop());
<强>更新强>
我意识到,如果您调用textView.setText(...)
然后立即调用scrollView.scrollTo(...)
,则它不起作用,因为文本视图大小不会立即更新。你应该像这样更新scoll位置:
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.scrollTo(textView.getRight(), textView.getTop());
}
});