编写布局xml文件 ,假设已经编好一个名为title.xml的布局文件。
则可以在其它xml布局文件中使用include语句引用该布局:
<include layout="@layout/title"/>
这样可以解决重复编写布局代码的问题,但是如果布局中有一些控件要求能够响应事件,且该控件响应的事件都是一样的,比如返回键,这种情况最好使用自定义控件的方式来解决:
①编写xml布局文件 。
②新建类继承布局类 ,并在类中加载布局,为控件注册事件。
public class TitleLayout extends LinearLayout {
public TitleLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
LayoutInflater.from(context).inflate(R.layout.title, this);//加载布局
Button titlebackButton =(Button) findViewById(R.id.title_back);
Button titleeditButton =(Button) findViewById(R.id.title_edit);
titlebackButton.setOnClickListener(new OnClickListener() {//为控件添加事件
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
((Activity)getContext()).finish();
}
});
titleeditButton.setOnClickListener(new OnClickListener() {//为控件添加事件
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(getContext(), "you clicked edit button", Toast.LENGTH_SHORT).show();
}
});
}
}
③在xml文件中引入布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.example.uicustomviews.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</com.example.uicustomviews.TitleLayout>
</LinearLayout>
这里需要指明控件的完整类名