找了很久,终于找到了。
<?xml version="1.0" encoding="UTF-8" ?> <merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:okCancelBar="http://schemas.android.com/apk/res/com.example.android.merge"> <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="center" android:src="@drawable/golden_gate" /> <com.example.android.merge.OkCancelBar android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:paddingTop="8dip" android:gravity="center_horizontal" android:background="#AA000000" okCancelBar:okLabel="Save" okCancelBar:cancelLabel="Don't save" /> </merge>
com.example.android.merge.OkCancelBar是一个自定义的GROUP
public class OkCancelBar extends LinearLayout{ public OkCancelBar(Context context,AttributeSet attrs){ super(context, attrs); setOrientation(HORIZONTAL); setGravity(Gravity.CENTER); setWeightSum(1.0f); LayoutInflater.from(context).inflate(R.layout.okcancelbar,this,true); TypedArray array= context.obtainStyledAttributes(attrs, R.styleable.OkCancelBar,0,0); String text= array.getString(R.styleable.OkCancelBar_okLabel); if(text==null) text="Ok"; ((Button) findViewById(R.id.okcancelbar_ok)).setText(text); text= array.getString(R.styleable.OkCancelBar_cancelLabel); if(text==null) text="Cancel"; ((Button) findViewById(R.id.okcancelbar_cancel)).setText(text); array.recycle(); } }
LayoutInflater.from(context).inflate(R.layout.okcancelbar,this,true);
直接从XML中得到一个VIEW加入到当前GROUP中
okcancelbar.xml:
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <include layout="@layout/okcancelbar_button" android:id="@+id/okcancelbar_ok"/> <include layout="@layout/okcancelbar_button" android:id="@+id/okcancelbar_cancel"/> </merge>