【发布时间】:2011-05-06 07:22:04
【问题描述】:
我该怎么做?
某事:
final View view=FLall.getChildAt(i);
if (view.getType()==ImageView) {
...
}
【问题讨论】:
我该怎么做?
某事:
final View view=FLall.getChildAt(i);
if (view.getType()==ImageView) {
...
}
【问题讨论】:
您可以为此目的使用标签:请参阅http://developer.android.com/reference/android/view/View.html 的 set/getTag 方法
【讨论】:
如果由于某种奇怪的原因,您不能使用Asahi的建议(使用标签),我的建议如下:
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 ...
【讨论】:
view instanceof ListView 是false,则表示您的视图不是ListView。
我尝试了以下方法并且成功了:
View view=FLall.getChildAt(i);
Log.i("ViewName", view.getClass().getName());
【讨论】:
对于检查此问题的其他人,在某些情况下 instanceof 不起作用(我不知道为什么!),例如,如果您想检查视图类型是 ImageView 还是 ImageButton(我测试了这个情况),它使它们相同,因此您可以使用这种方式进行扫描:
//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;
}
【讨论】:
我正在将此解决方案用于 KOTLIN 代码,因此放弃 Arash 的解决方案:
if(v.javaClass.name.equals("android.widget.ImageView", ignoreCase = true)) ...
使用它对我不起作用,但将其调整为:
if(v.javaClass.name.contains("ImageView", ignoreCase = true)) ...
为我工作!
【讨论】:
在 Kotlin 中,您可以使用 "is" 进行检查:
val view = findViewById<View>(R.id.a_view)
if (view is ImageView) {
print("This is a ImageView")
} else {
print("This is not a ImageView")
}
【讨论】:
在 Android Xamarin 中,这是 Android 获取视图类型并与控制器类型进行比较的方式。
var view = FindViewById<TextView>(Resource.Id.emailText);
if (typeof(TextView).IsInstanceOfType(view))
{
var textView = (TextView)view;
}
【讨论】: