- 引入布局
- 创建布局 title.xml
- 使用include属性引入布局(并重写oncreate方法)
- 创建自定义控件
- 创建布局 title.xm
- 创建TitleLayout类,继承LinearLayout
- 布局中使用自定义控件
- 活动中添加响应事件
创建布局 title.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="#99000000">
<Button
android:id="@+id/title_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:text="Back" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="Title Text"
android:textColor="#fff" />
<Button
android:id="@+id/title_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:text="Edit" />
</LinearLayout>
引入布局:
<include layout="@layout/title"/>
重写oncreate方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
if (actionBar!=null) {
actionBar.hide();
}
}
到这里布局能够引用,但是需要相应事件,所以需要自定义控件了。
创建TitleLayout类,继承LinearLayout,并添加响应事件
public class TitleLayout extends LinearLayout {
public TitleLayout(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.title, this);
Button titleBack = findViewById(R.id.title_back);
Button titleEdit = findViewById(R.id.title_edit);
titleBack.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "返回", Toast.LENGTH_SHORT).show();
}
});
titleEdit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "编辑", Toast.LENGTH_SHORT).show();
}
});
}
}
布局中使用自定义控件:
<firstcode.zs.com.fc_3.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"/>