我有一个以 TextSwitcher 作为子级的 HorizontalScrollView,如下所示。
<HorizontalScrollView
android:id="@+id/horizontal_scroll_view_equation"
android:scrollbars="none"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="0dp"
android:fillViewport="true"
android:layout_gravity="right">
<TextSwitcher
android:id="@+id/text_switcher_equation"
android:layout_gravity="right"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<TextView
android:layout_marginRight="@dimen/spacing_medium"
android:layout_marginLeft="@dimen/spacing_medium"
android:id="@+id/text_view_equation_default"
android:background="@android:color/transparent"
android:gravity="center_vertical|right"
android:maxLines="1"
android:textSize="@dimen/font_xxxlarge"
android:scrollHorizontally="true"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:layout_marginRight="@dimen/spacing_medium"
android:layout_marginLeft="@dimen/spacing_medium"
android:id="@+id/text_view_equation_anim"
android:background="@android:color/transparent"
android:gravity="center_vertical|right"
android:maxLines="1"
android:textSize="@dimen/font_xxxlarge"
android:scrollHorizontally="true"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</TextSwitcher>
</HorizontalScrollView>
上面这段代码的目标是创建一个水平滚动的TextView。此代码是计算器的一部分,因此 TextView 的文本是动态的。这意味着有时 TextView 需要可滚动,有时则不需要(取决于文本的长度)。
我现在的奇怪行为如下。一旦用户输入越来越多的字符,TextView 就会变得完全可滚动。但是,当用户清除方程式时,HorizontalScrollView 保持折叠状态,这意味着它仍然可以滚动,而 TextView 的文本只有一个字符(零)。这意味着用户可以左右滚动文本,而文本只有一个字符。
下面将演示此行为(请参见下图)。在左图中,用户输入了一个方程。然后,用户点击清除,方程被清除,这意味着设置为 0。但是,如右图所示,TextView 仍然可以向右滚动。
另一个显着的现象是,当用户再次单击 clear(连续两次)时,TextView 的滚动不再可能。出于某种原因,当用户第一次点击重置时,情况并非如此,但我不明白为什么。
我想要实现的是,一旦 TextView 的文本被清除(因此 TextView 的文本包含一个字符),用户就不可能向左或向右滚动文本。