无论如何要找出View a View是什么类型?
Is there anyway to find out what type of View a View is?
所以如果我有一个 LinearLayout
并且里面有几个 children Views
,比如几个 Buttons
一个 TextView
和一个 CheckBox
,使用 LinearLayout
的 getChildAt(x)
然后我会得到一个未指定的 View
。请注意,我在这里没有使用 xml,所以这一切都是以编程方式完成的。
public class CustomViewClass extends LinearLayout {
private Context context;
public CustomViewClass (Context context) {
super(context);
this.context = context;
setOrientation(LinearLayout.VERTICAL);
setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
setBackgroundColor(Color.DKGRAY);
// Code which adds Buttons and such to the LinearLayout
getChildAt(1)
}
}
getChildAt(1)
,无论如何我可以找出它是什么类型的 View
,无论是 Button
还是 TextView
或任何程序?
一种方法是调用 getClass
。这将为您提供一个代表视图类型的 Class
对象。
例如:
Class clazz = getChildAt(1).getClass();
拥有class后,您可以用它做各种事情。例如获取名称:
System.out.println(clazz.getName());
现在你知道那是什么样的风景了吧
另一种方法是使用 instanceof
运算符。这是一个例子:
if (getChildAt(1) instanceof TexView) {
// getChildAt(1) is a TextView or an instance of a subclass of TextView
}
使用 instanceOf 方法。示例是
if (view instanceof ImageView)
或者您可以使用以下内容找出视图类型。但是如果你想对它做任何计算,instance of 是最好的选择。
view.getClass
if (view.getClass().getName().equalsIgnoreCase("android.widget.ImageView"))
所以如果我有一个 LinearLayout
并且里面有几个 children Views
,比如几个 Buttons
一个 TextView
和一个 CheckBox
,使用 LinearLayout
的 getChildAt(x)
然后我会得到一个未指定的 View
。请注意,我在这里没有使用 xml,所以这一切都是以编程方式完成的。
public class CustomViewClass extends LinearLayout {
private Context context;
public CustomViewClass (Context context) {
super(context);
this.context = context;
setOrientation(LinearLayout.VERTICAL);
setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
setBackgroundColor(Color.DKGRAY);
// Code which adds Buttons and such to the LinearLayout
getChildAt(1)
}
}
getChildAt(1)
,无论如何我可以找出它是什么类型的 View
,无论是 Button
还是 TextView
或任何程序?
一种方法是调用 getClass
。这将为您提供一个代表视图类型的 Class
对象。
例如:
Class clazz = getChildAt(1).getClass();
拥有class后,您可以用它做各种事情。例如获取名称:
System.out.println(clazz.getName());
现在你知道那是什么样的风景了吧
另一种方法是使用 instanceof
运算符。这是一个例子:
if (getChildAt(1) instanceof TexView) {
// getChildAt(1) is a TextView or an instance of a subclass of TextView
}
使用 instanceOf 方法。示例是
if (view instanceof ImageView)
或者您可以使用以下内容找出视图类型。但是如果你想对它做任何计算,instance of 是最好的选择。
view.getClass
if (view.getClass().getName().equalsIgnoreCase("android.widget.ImageView"))