Android获取视图的类型

lac*_*cas 55 java android gettype

我怎样才能做到这一点?

东西:

final View view=FLall.getChildAt(i);

if (view.getType()==ImageView) {
...
}
Run Code Online (Sandbox Code Playgroud)

Fel*_*lix 138

如果由于某种奇怪的原因,你不能使用朝日的建议(使用标签),我的主张如下:

if (view instanceof ImageView) {
    ImageView imageView = (ImageView) view;
    // do what you want with imageView
}
else if (view instanceof TextView) {
    TextView textView = (TextView) view;
    // do what you want with textView
}
else if ...
Run Code Online (Sandbox Code Playgroud)

  • @mabeiyi如果`view instanceof ListView`是'false`,这意味着你的视图不是`ListView`. (5认同)

rea*_*jin 18

我尝试以下它,它工作:

View view=FLall.getChildAt(i);
Log.i("ViewName", view.getClass().getName());
Run Code Online (Sandbox Code Playgroud)


Ara*_*ash 8

对于检查此问题的其他人,在某些情况下instanceof不起作用(我不知道为什么!),例如,如果你想检查视图类型是否ImageViewImageButton(我测试过这种情况),它会得到它们相同,所以你扫描用这种方式:

//v is your View
    if (v.getClass().getName().equalsIgnoreCase("android.widget.ImageView")) {
        Log.e("imgview", v.toString());
        imgview = (ImageView) v;
    } else if (v.getClass().getName().equalsIgnoreCase("android.widget.ImageButton")) {
        Log.e("imgbtn", v.toString());
        imgbtn = (ImageButton) v; 
    }
Run Code Online (Sandbox Code Playgroud)


Asa*_*ahi 6

您可以为此目的使用标记:请参阅http://developer.android.com/reference/android/view/View.html上的 set/getTag方法