0

我正在写一个计算器,它有一个文本视图和许多按钮。如果我按下某个按钮,textview 将在字符串末尾添加一个新字符。并自动以正确的方向滚动到这个字符。它有效,但较旧的字符(左侧)正在切割,如果我向右滚动,我会看到一个空白空间。

<HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fillViewport="true" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_gravity="right"
            android:gravity="center_vertical|left"
            android:maxLines="1"
            android:padding="10dp"
            android:singleLine="true"
            android:text=""
            android:textSize="50sp" />
    </HorizontalScrollView>

看这个。我输入 123456789123456789。从 1 到 7 的数字不可见。正确位置的空白正好是 7 个数字。

滚动条时左侧可用位置

滚动条时正确的可用位置

我阅读了很多答案,但所有这些都对我不起作用。

4

1 回答 1

1

我不知道为什么会发生这种情况,但我可以向您推荐一种避免它的方法。layout_gravity从 中删除TextView并添加android:scrollbars="none"HorizontalScrollView

<HorizontalScrollView
    android:id="@+id/scrollView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fillViewport="true" 
    android:scrollbars="none">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"            
        android:gravity="center_vertical|left"
        android:maxLines="1"
        android:padding="10dp"
        android:singleLine="true"
        android:text=""
        android:textSize="50sp" />
</HorizontalScrollView>

然后在代码中,当您修改文本时TextView添加下面的代码以“移动”HorizontalScrollView到正确的位置:

mHorizontalScroll.post(new Runnable() {

        @Override
    public void run() {             
        mHorizontalScroll.scrollTo(mScroll.getWidth(), 0);
    }

});
于 2012-11-12T18:38:46.513 回答