使用自定义控件的方式解决了两个问题:
1、在每一个活动中 重复编写布局代码的问题,
2、在每一个活动中 都需要重新注册一遍返回按钮的点击事件
下面直接看例子:
效果图:
my_layout.xml中的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
>
<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="#32CD99"
android:text="返回"
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="标题"
android:textColor="#fff"
android:textSize="24sp" />
<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="#6F4242"
android:text="编辑"
android:textColor="#fff" />
</LinearLayout>
myLayout.java中的代码:
package com.demo.mydefinitionlayout;
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
/**
* @使用自定义控件的方式解决了两个问题:
* @1、在每一个活动中 重复编写布局代码的问题,
* @2、在每一个活动中 都需要重新注册一遍返回按钮的点击事件
*/
public class myLayout extends LinearLayout {
public myLayout(Context context, AttributeSet attrs) {
super(context, attrs);
/**
* 对标题栏布局进行动态加载
*/
LayoutInflater.from(context).inflate(R.layout.my_layout, this);
/**
* 获得按钮,添加点击事件
*/
Button title_back = (Button) findViewById(R.id.title_back);
Button title_edit = (Button) findViewById(R.id.title_edit);
title_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 销毁当前活动
Toast.makeText(getContext(), "您点击了返回按钮", 1).show();
((Activity) getContext()).finish();
}
});
title_edit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getContext(), "您点击了编辑按钮", 1).show();
}
});
}
}
activity_main.xml中的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- 1、添加普通控件 -->
<!-- <include layout="@layout/title" /> -->
<!-- 2、添加自定义控件,添加自定义控件的时候,需要指明控件的完整类名,包名在这里是不可以省略的 -->
<com.demo.mydefinitionlayout.myLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</com.demo.mydefinitionlayout.myLayout>
</LinearLayout>
MainActivity.java中的代码:
package com.demo.mydefinitionlayout;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.os.Build;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉activity自带的标题栏
setContentView(R.layout.activity_main);
}
}
项目下载: