引入布局文件
很多活動中某一個局部布局一致,避免代碼冗余道宅,可以定義一個布局文件魏滚,而在其他布局文件中引入此布局文件,代碼就會變得簡潔
XML布局文件事例:
<?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="wrap_content"
android:background="@drawable/title_bg" >
<Button
android:id="@+id/title_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dip"
android:background="@drawable/back_bg"
android:text="Back"
android:textColor="#fff" />
<TextView
android:id="@+id/title_text"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="This is Title"
android:textColor="#fff"
android:textSize="22sp" />
<Button
android:id="@+id/title_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dip"
android:background="@drawable/edit_bg"
android:text="Edit"
android:textColor="#fff" />
</LinearLayout>
在XML文件中引入一個布局文件代碼:
<include layout="ID" />
自定義控件
引入一個布局文件谦秧,布局文件中的某些控件在活動中的功能一致,我們就可以自定義一個控件撵溃,為此控件中的控件添加動作疚鲤,響應事件,減少代碼冗余
- 創(chuàng)建自定義控件
上面我們使用的是LinearLayout布局缘挑,這里我們自定義的布局類需要繼承LinearLayout類
public class TitleLayout extends LinearLayout{
//在布局文件中引入這個控件就會調用這個構造函數(shù)
public TitleLayout(Context context, AttributeSet attrs){
//對布局文件進行動態(tài)加載
LayoutInflater.from(context).inflate(ID, this);
Button titleBack = (Button) findViewById(R.id.title_back);
Button titleEdit = (Button) findViewById(R.id.title_edit);
titleBack.setOnClickListener(new OnClickListener(){
@override
public void onClick(View v){
//加入邏輯代碼
}
});
}
}
- 在布局文件中添加自定義控件
添加自定義控件的方式和添加Android中預定義的控件方式基本一樣集歇,引入自定義控件需要完整路徑(包名+類名)
<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>