我該如何做到這一點?Android獲取類型的視圖
東西:
final View view=FLall.getChildAt(i);
if (view.getType()==ImageView) {
...
}
我該如何做到這一點?Android獲取類型的視圖
東西:
final View view=FLall.getChildAt(i);
if (view.getType()==ImageView) {
...
}
如果出於某種奇怪的原因,你不能使用朝日的建議(使用標籤),我的建議是以下幾點:
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 ...
您可以使用標籤用於這一目的:請參見set/getTag方法在http://developer.android.com/reference/android/view/View.html
我嘗試以下方法和它的工作:
View view=FLall.getChildAt(i);
Log.i("ViewName", view.getClass().getName());
我正在使用TextView來設置微調器的樣式(鏈接在這個例子中:http://developer.android.com/resources/tutorials/views/hello-spinner.html)我也使用onItemSelected事件的方法,這個事件一直持續觸發,我沒有意識到,使用上面的方法 - v.getClass()。getName() - 我可以確定視圖被傳入事件是我用於樣式的TextView。 – jwatts1980 2011-11-11 17:33:50
對於其他人誰檢查這個問題,在某些情況下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;
}
它不適用於ListView。而且,我必須創建另一個擴展ListView的自定義CustomListView,以便我可以使用(查看instanceof CustomListView)。當它是ListView時,有什麼方法可以知道類型嗎?謝謝。 – mabeiyi 2013-06-21 17:23:19
@mabeiyi如果'view instanceof ListView'爲'false',則表示您的視圖不是'ListView'。 – Felix 2013-06-27 07:51:10
@Felix - 實際上如果你有一個ListView並且你設置了「singleChoice」,那麼它將返回一個類名「android.widget.CheckedTextView」。這只是咬我一口。這是在封面下面。 :( – PAntoine 2017-07-21 09:31:10