0

我正在使用我自己的 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 正在工作。我实现了启用滚动并且也检测到水平滑动。

但是有一个问题:当我使用ViewSwitcher的“showNext”-Method时,出现的TextView是不可滚动的。如果我滚动并返回到我的上一个 TextView,这个会滚动。

当“android:fadeScrollbars”设置为 false 时,两个视图都显示滚动条。它始终是不可滚动的“第二个”TextView。

以下是我如何更改显示的 TextView:

TextView oldView = (TextView) this.getCurrentView();
TextView newView = (TextView) this.getNextView();
//newView.setMovementMethod(new LinkMovementMethod());
newView.setText(text);
this.showNext();

我感觉“showNext”并没有将焦点放在下一个视图上。但我已经尝试在 oldView 上使用“clearFocus”,在 newView 上使用“requestFocus”。

有任何想法吗?

4

1 回答 1

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();
于 2014-02-09T14:55:39.033 回答