Android - ViewSwitcher没有切换视图

时间:2010-09-21 18:12:09

标签: android viewswitcher

应该很容易,对吧?所以 - 这就是我在XML中定义ViewSwitcher的方式(为了简洁省略了Id和布局)

<ViewSwitcher android:layout_height="wrap_content" android:layout_width="fill_parent" >       
    <!-- First view, comes up OK --> 
    <LinearLayout android:id="@+id/header1">
        <!-- some more controls: Progress bar, test view and the button -->
    </LinearLayout>
    <!-- second view. changing to the actual (not include) layout has no effect -->
    <include android:id="@+id/header2" />
</ViewSwitcher>

然后在我的Java代码中的某处我有这段代码

ViewSwitcher switcher = (ViewSwitcher) findViewById(R.id.profileSwitcher);
// more code that basically executes background search
// when call comes back - switch
switcher.bringToFront(); // does nothing
// switcher.bringChildToFront(findViewById(R.id.header2)); // no effect ether

它只是没有切换。我为API v.3(1.5+)开发,令我惊讶的是,很少有人提到ViewSwitcher。我错过了一些明显的东西吗?

P.S。我只是通过蛮力发现这是有效的:

switcher.setDisplayedChild(1);

仍然 - 为什么bringToFront()没有运气?

2 个答案:

答案 0 :(得分:19)

bringToFront()实际上与ViewSwitcher无关,该方法继承自View类,代表当前视图的z顺序操作:https://developer.android.com/reference/android/view/View.html#bringToFront()

您必须使用从showNext()继承的showPrevious()ViewAnimator方法。

答案 1 :(得分:15)

ViewSwitcher中在视图之间导航,您可以使用方法showPrevious()showNext()

或者也可以使用setDisplayedChild(int index)方法转到特定视图,其中索引可以是01