Android ViewAnimator / ViewFlipper / ViewSwitcher和setDisplayedChild的硬编码值

时间:2011-03-31 20:11:30

标签: android view android-layout

我打算用以下其中一个:

  • ViewAnimator
  • ViewFlipper
  • ViewSwitcher

他们都有一个方法setDisplayedChild来将视图从一个更改为另一个。

该方法的唯一参数是int whichChild - 视图队列中的一些视图。

是否可以使用任何类型的非硬编码数字?

我希望能够致电:

setDisplayedChild(R.id.SettingsView)

而不是:

setDisplayedChild(3)

2 个答案:

答案 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);
        }
    }
}