无论如何要找出View a View是什么类型?

Is there anyway to find out what type of View a View is?

所以如果我有一个 LinearLayout 并且里面有几个 children Views,比如几个 Buttons 一个 TextView和一个 CheckBox,使用 LinearLayoutgetChildAt(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"))