2012-04-30 33 views
0

假設我想要一個帶有2個複選框的自定義視圖。我將開始創建這樣一個佈局文件:有效使用Layout-inflator

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<CheckBox 
    android:id="@+id/checkBox1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="CheckBox" /> 

<CheckBox 
    android:id="@+id/checkBox2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="CheckBox" /> 

</LinearLayout> 

然後創建一個擴展的FrameLayout視圖,增加布局使用佈局充氣:

mInflate.inflate(R.layout.foo, this, true); 

我的這種方法的問題是,我我嵌套2佈局只是有一個非常基本的看法與2個複選框。由於我目前正在研究一個非常複雜的佈局,因此我正在尋求一種避免在使用佈局充氣器時不必要的佈局嵌套的方法。

回答

1

您可以使用merge標籤在你的XML佈局,然後它充氣:

<?xml version="1.0" encoding="utf-8"?> 
<merge xmlns:android="http://schemas.android.com/apk/res/android"> 

<CheckBox 
    android:id="@+id/checkBox1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="CheckBox" /> 

<CheckBox 
    android:id="@+id/checkBox2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="CheckBox" /> 

</merge> 

FrameLayout可能不是你的佈局,因爲最佳的解決方案它會將視圖堆疊在一起。

1

創建複選框動態:

CheckBox checkBox1 = new CheckBox(this); // or getActivity() depending on code context 
CheckBox checkBox2 = new CheckBox(this); 
checkBox1.setText("CheckBox"); 
etc. 
frameLayout.addView(child1); 
frameLayout.addView(child2);