界面布局我们会碰到很多头部的样式,但很多都是一样或者是类似的,那么我最好就将他自定义整合起来,这样用起来非常的方便快捷 提高开发效率。
首先我们要清楚我们这个头部是什么样子
如
头部一般都是左右两边是图片 中间是文字
现在开始写代码
因为我们是自定义头部的布局所以我们要继承一个布局
public class TitleBar extends RelativeLayout {
private Context mContext;
private ImageView mTop_Left,mTop_Right;
private TextView mTop_Tv;
public TitleBar(Context context) {
this(context, null);
}
public TitleBar(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public TitleBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.mContext=context;
//初始化布局
initView();
//初始化控件 id
initId();
//监听控件
Listener();
}
然后我们开始实现里面的方法
首先是initView();
/**
* 初始化View
**/
private void initView() {
View.inflate(mContext, R.layout.ui_title_bar, this);
}
/**
* 初始化控件id
**/
private void initId() {
mTop_Tv=(TextView) findViewById(R.id.top_title_tv);
mTop_Left=(ImageView) findViewById(R.id.top_left_iv);
mTop_Right=(ImageView) findViewById(R.id.top_right_iv);
}
Listener();
/**
* 一般左边都是返回按钮所以可以在这里直接监听
*/
private void Listener() {
mTop_Left.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 关闭当前页面
ActivityMangerUtil.getInstance().finishActivity((Activity)mContext);
}
});
}
下面就修改的方法 可以按需求自己定义方法
/**
* 设置中间文本
* @param title
*/
public void setTitle(String title){
mTop_Tv.setText(title);
}
/**
* 隐藏右边的图片
*/
public void hideRightIv() {
mTop_Right.setVisibility(View.INVISIBLE);
}
/**
* 隐藏左边的图片
*/
public void hideLeftIv() {
mTop_Left.setVisibility(View.INVISIBLE);
}
/**
* 显示左边的图片
*/
public void showLeftIv() {
mTop_Left.setVisibility(View.VISIBLE);
}
/**
* 显示右边的图片
*/
public void showRightIv() {
mTop_Right.setVisibility(View.VISIBLE);
}
/**
* 设置左边的图片
* @param resultId
*/
public void setPhotoLeft(int resultId){
mTop_Left.setImageResource(resultId);
}
/**
* 设置右边的图片
* @param resultId
*/
public void setPhotoRight(int resultId){
mTop_Right.setImageResource(resultId);
}
这样自定义的TitleBar 就写完了 那么怎么去用
我们写一个BaseActivity 继承Activity
那么我们初始化这个头部
public abstract class BaseActivity extends Activity {
protected TitleBar titleBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(initRootViewId());
// 统一管理Activity
ActivityMangerUtil.getInstance().addActivity(this);
// 1.titleBar == null
titleBar = (TitleBar) findViewById(R.id.title_bar);
}
/**
* 初始化头部
*/
protected abstract void initTitle();</span>
之后的Activity继承BaseActivity
去实现初始化头部
在所需要的Activity中的布局去添加
<com.example.inote.ui.TitleBar
android:id="@+id/title_bar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
在里面实现TitlrBar的方法就好了
灵活性高,按需求改变即可。