Есть ли какой-нибудь способ узнать, что это за вид View?

Так что, если бы я имел LinearLayout и было несколько детей Views внутри, скажем, как пара Buttons TextView и CheckBox, с использованием LinearLayout"s 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 или что-то прогаматически?

2 ответа

Решение

Один из способов сделать это - позвонить 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
}

Используйте метод instanceOf. Примером примера является

if (view instanceof ImageView) 

Или Вы можете использовать ниже, чтобы узнать тип просмотра. Но если вы хотите сделать какие-либо вычисления на этом, экземпляр является лучшим выбором.

view.getClass

if (view.getClass().getName().equalsIgnoreCase("android.widget.ImageView"))
Другие вопросы по тегам