andriod 简单的统一布局头部自定义ViewTitleBar

界面布局我们会碰到很多头部的样式,但很多都是一样或者是类似的,那么我最好就将他自定义整合起来,这样用起来非常的方便快捷 提高开发效率。


首先我们要清楚我们这个头部是什么样子

     


头部一般都是左右两边是图片 中间是文字


现在开始写代码

因为我们是自定义头部的布局所以我们要继承一个布局

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);
		
		
		
	}


initId();

/**
	*  初始化控件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的方法就好了


灵活性高,按需求改变即可。




阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hao_m582/article/details/52277050
个人分类: andrid 笔记
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭