2011-05-20 3 views
3

У меня есть следующие макет определены в XML:Как раздуть макет динамически?

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/streamRelativeLayout"> 
     <ListView android:layout_height="fill_parent" android:layout_width="fill_parent" android:id="@+id/streamListView"></ListView> 
     <ProgressBar android:layout_centerInParent="true" android:layout_height="wrap_content" android:id="@+id/streamProgressBar" android:layout_width="wrap_content"></ProgressBar> 
    </RelativeLayout> 

Как я могу использовать LayoutInflater, чтобы захватить ListView и ProgressBar и назначить его в коде?

ответ

19

Таким образом:

View v = getLayoutInflater().inflate(R.layout.YOUR_LAYOUT_ID, null); 
ListView listview = (ListView) v.findViewById(R.id.streamListView); 
ProgressBar progress = (ProgressBar) v.findViewById(R.id.streamProgressBar); 
7

Вам просто нужна ссылка активности и называют:

RelativeLayout relativeLayout = (RelativeLayout)activity.getLayoutInflater().inflate(R.layout.your_layout, null); 

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

relativeLayout.findViewById(R.id.anId); 
+0

Я имеющий динамически созданные linaerlayout что LinearLayout ll = новый LinearLayout (контекст); этот макет имеет некоторые подвид, такие как framelayout, webview. Теперь, как я могу раздуть этот линейный выход.? – Karthick

+1

Избегайте пропускать null в качестве корня представления (необходимо для разрешения параметров макета на корневом элементе раздутого макета), потому что При раздувании макета избегайте пропускания в качестве родительского представления null, поскольку в противном случае любые параметры макета в корне раздутого макета будут игнорировать. –

0

попробовать это

RelativeLayout myLayout = (RelativeLayout)getLayoutInflater().inflate(
       R.layout.you_xml_id, null); 

     ListView list = (ListView)myLayout.findViewById(R.id.streamListView); 
     ProgressBar bar = (ProgressBar)myLayout.findViewById(R.id.streamProgressBar); 
0
private LayoutInflater mInflater; 
View convertView; 
mInflater = LayoutInflater.from(context); 
convertView = mInflater.inflate(R.xml.yourxmlname, null); 

теперь вы можете получить доступ к детали

convertView.findViewById 

или если вы ВГА много экземпляров, вы можете определить viewholder

static class CalViewHolder { 
    ListView con_list; 
    Progressbar con_progress; 
} 
holder = new CalViewHolder(); 
convertView.setTag(holder); 
Смежные вопросы