更新TextView时的Horizo​​ntalScroll

时间:2012-11-12 16:56:55

标签: android scroll textview

我正在写一个计算器,它有一个textview和许多按钮。如果按某个按钮,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个数字。

It is the left available position when scrollbar

It is the right available position when scrollbar

我读了很多答案,但这一切对我都不起作用。

1 个答案:

答案 0 :(得分: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);
    }

});