2015-01-05 5 views
1

В какой-то момент в моем приложении вам нужно получить представление (на самом деле, оно должно быть одно) из макета. Что я знаю о макете, это int ссылка, в виде R.layout.my_layout.Как получить дочерние представления программно из макета [из ресурса R.layout]

Как я могу получить представление внутри?

Я пытался получать вид корня с

View rootView = (View) getResources().getLayout(R.layout.my_layout)

но, очевидно, это не сработало. getLayout() возвращает объект XMLResourceParser, который я не знаю, как управлять.

Я не могу работать с идентификаторами.

+0

вы не можете просто использовать findViewById? – Blackbelt

+0

@Blackbelt нет, если в макете нет идентификатора ... – giulio

ответ

2

Использование макета инфлятор

View rootView = View.inflate(context, R.layout.my_layout, null); 
+0

Принял первый, так как все кажется одинаковым. Спасибо вам, ребята. – natario

0

Если у вас есть раскладка идентификатор ресурса, необходимо раздуть макет и получить Виды из что:

View rootView = getLayoutInflater().inflate(layoutId, null); 
0

Используйте это:

ViewGroup rootView = (ViewGroup) getLayoutInflater().inflate(R.layout.my_layout,null); 

и получите доступ к детским детям с

rootView.getChildAt(x); 

или общая сумма Чайлдс:

rootView.getChildCount(); 
+0

Что такое 'x' в getChildAt (x)? –

0

После того, как вы получите представление, вам просто нужно использовать -

view.findViewById(R.id.childID) 

где,

childID является дочерним идентификатором родительский вид.

1

Чтобы загрузить вид:

LayoutInflater inflater = LayoutInflater.from(getContext()); 
    View v = inflater.inflate(R.layout.your_layout, null); 

И получить подключ вид из него:

View sub = v.findViewById(R.id.your_sub_view_id);