Есть ли какой-нибудь способ узнать, что это за вид 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"))