0

因此,如果我有 aLinearLayout并在其中有几个孩子Views,比如一对ButtonsaTextView和 a CheckBox,使用LinearLayout'sgetChildAt(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它是什么类型的,无论是 aButton还是 aTextView或其他任何程序?

4

2 回答 2

0

一种方法是调用getClass. 这将为您提供一个Class表示视图类型的对象。

例如:

Class clazz = getChildAt(1).getClass();

上完课后,你可以用它做各种事情。例如获取名称:

System.out.println(clazz.getName());

现在你知道它是什么样的观点了。

另一种方法是使用instanceof运算符。这是一个例子:

if (getChildAt(1) instanceof TexView) {
    // getChildAt(1) is a TextView or an instance of a subclass of TextView
}
于 2017-07-29T01:56:36.247 回答
0

使用 instanceOf 方法。示例是

if (view instanceof ImageView) 

或者您可以使用下面的来找出视图的类型。但是如果你想对其进行任何计算,instance of 是最好的选择。

view.getClass

if (view.getClass().getName().equalsIgnoreCase("android.widget.ImageView"))
于 2017-07-29T01:59:37.827 回答