我打算用以下其中一个:
ViewAnimator
ViewFlipper
ViewSwitcher
他们都有一个方法setDisplayedChild
来将视图从一个更改为另一个。
该方法的唯一参数是int whichChild
- 视图队列中的一些视图。
是否可以使用任何类型的非硬编码数字?
我希望能够致电:
setDisplayedChild(R.id.SettingsView)
而不是:
setDisplayedChild(3)
答案 0 :(得分:14)
您可以使用indexOfChild(View子)方法:
viewAnimator.setDisplayedChild( viewAnimator.indexOfChild( findViewById(R.id.SettingsView) ) );
答案 1 :(得分:2)
这些类只是ViewGroup扩展,它将子列表和View数组保持在一起。
您可以通过Id的视图列表轻松扩展您想要查看的任何内容。 (未经测试的代码如下)
class myFlipper extends ViewFlipper {
public myFlipper(Context context) {
super(context);
}
int getChildById(int id) {
int childindex = -1;
int i = 0;
while (i<getChildCount()) {
View v = getChildAt(i);
if (v.getId()==id) {
childindex = i;
break;
}
i++;
}
return childindex;
}
void setDisplayedChildById(int id) {
int i = getChildById(id);
if (i != -1) {
setDisplayedChild(i);
}
}
}