Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 水平滚动并聚焦文本视图中的最后一个数字_Java_Android_Android Layout_Android Studio_Textview - Fatal编程技术网

Java 水平滚动并聚焦文本视图中的最后一个数字

Java 水平滚动并聚焦文本视图中的最后一个数字,java,android,android-layout,android-studio,textview,Java,Android,Android Layout,Android Studio,Textview,我正在做一个计算器应用程序 我有一个文本视图,用户在其中写入数字以详细说明 文本视图位于水平滚动视图内。水平滚动视图位于垂直线性布局内。文本视图是单行的,当用户写一个长的数字时,数字就会从屏幕上显示出来 TextView应该跟随用户添加的最后一个数字,这样他就可以在不滚动屏幕的情况下查看最后添加的数字。我不想要一个每秒重复滚动的自动滚动功能,我只想关注最后添加的数字 这是文本视图 <HorizontalScrollView android:layout_width=

我正在做一个计算器应用程序

我有一个文本视图,用户在其中写入数字以详细说明

文本视图位于水平滚动视图内。水平滚动视图位于垂直线性布局内。文本视图是单行的,当用户写一个长的数字时,数字就会从屏幕上显示出来

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>

试试这个:

  • 在活动中,为滚动视图和文本视图创建变量:

    TextView textView;
    HorizontalScrollView scrollView;
    
  • onCreate()
    中初始化它们:

  • 每次更新文本视图的文本时,都会更新滚动视图的滚动位置:

    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());
            }
        });
    
        scrollView.post(new Runnable() {
            @Override
            public void run() {
                scrollView.scrollTo(textView.getRight(), textView.getTop());
            }
        });