我正在使用自己的ViewSwitcher。它包含两个具有相同布局设置的TextView。
这是我的布局的一部分:
<MyViewSwitcher
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/textSwitcher"
android:layout_weight="1"
android:padding="15dp"
android:textAlignment="inherit"
android:clickable="false"
android:measureAllChildren="true">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@+id/text"
android:id="@+id/textView"
android:layout_gravity="center"
android:linksClickable="true"
android:textIsSelectable="false"
android:typeface="normal"
android:textStyle="normal"
android:scrollbars = "vertical"
android:fadeScrollbars="false"
android:textSize="@dimen/textsize"
android:clickable="true"
android:focusable="true"
android:longClickable="false" />
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@+id/text"
android:id="@+id/textView2"
android:layout_gravity="center"
android:linksClickable="true"
android:textIsSelectable="false"
android:typeface="normal"
android:textStyle="normal"
android:scrollbars = "vertical"
android:fadeScrollbars="false"
android:textSize="@dimen/textsize"
android:clickable="true"
android:focusable="true"
android:longClickable="false" />
</MyViewSwitcher>
他们只在“android:id”上有所不同。
我的ViewSwitcher到目前为止工作。我实现了启用滚动功能并检测到水平滑动。
但是有一个问题:当我使用“showNext” - ViewSwitcher的方法时,出现的TextView是不可滚动的。如果我滚动并返回上一个TextView,那么滚动。
当“android:fadeScrollbars”设置为false时,两个视图都显示Scrollbars。 它始终是“第二个”TextView,它不可滚动。
以下是我如何更改显示的TextView:
TextView oldView = (TextView) this.getCurrentView();
TextView newView = (TextView) this.getNextView();
//newView.setMovementMethod(new LinkMovementMethod());
newView.setText(text);
this.showNext();
我觉得“showNext”没有把重点放在下一个View上。但我已经尝试在newView上使用“clearFocus”,在newView上使用“requestFocus”。
有什么想法吗?
答案 0 :(得分:0)
我通过将“oldView”的MovementMethod设置为null来解决了这个问题:
TextView oldView= (TextView) this.getCurrentView();
oldView.setMovementMethod(null);
TextView newView = (TextView) this.getNextView();
newView .setMovementMethod(new LinkMovementMethod());
newView .setText(html);
this.showNext();