应该很容易,对吧?所以 - 这就是我在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()
没有运气?
答案 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)
方法转到特定视图,其中索引可以是0
或1