android 页面标题栏公用控件

在日常开发中,我们的XML布局文件的头部大多数都是相同或类似的。我们正常的业务开发,只需要中间“正文内容”一个布局,最终却成了这种情况,必须是大多数布局文件中都得copy这么一大段。

所以这里提供了一个公用的标题栏控件,贴上代码吧:

package qtt.cellcom.com.cn.widget;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

/**
 * 页面标题栏公用控件
 */
public class Header extends RelativeLayout {
    

    public Header(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public Header(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
    
    public Header(Context context) {
        super(context);
        init();
    }
    
    private void init() {
         int p = (int) (getResources().getDisplayMetrics().density * 10);
         setPadding(p, 0, p, 0);
    }

    public void setBackgroundColor(int color){
	setBackgroundColor(color);
    }
    
    public void setTitle(String text) {
        TextView tv = new TextView(getContext());
        tv.setTextSize(22);
        tv.setTextColor(Color.WHITE);
        tv.setText(text);
        tv.getPaint().setFakeBoldText(true);
        setTitleView(tv);
    }
    
    public void setTitleView(View view) {
        RelativeLayout.LayoutParams viewLp = new RelativeLayout.LayoutParams(-2, -2);
        viewLp.addRule(RelativeLayout.CENTER_IN_PARENT);
        addView(view, viewLp);
    }
    
    public void setRightView(View view, OnClickListener listener) {
        RelativeLayout.LayoutParams ivLp = new RelativeLayout.LayoutParams(-2, -2);
        ivLp.addRule(RelativeLayout.CENTER_VERTICAL);
        ivLp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        addView(view, ivLp);
        view.setOnClickListener(listener);
    }

    public void setRightImageViewRes(int res, OnClickListener listener) {
        ImageView iv = new ImageView(getContext());
        iv.setImageResource(res);
        setRightView(iv, listener);
    }
    
    public void setLeftView(View view, OnClickListener listener) {
        RelativeLayout.LayoutParams ivLp = new RelativeLayout.LayoutParams(-2, -2);
        ivLp.addRule(RelativeLayout.CENTER_VERTICAL);
        ivLp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        addView(view, ivLp);
        view.setOnClickListener(listener);
    }
    
    public void setLeftImageVewRes(int res, OnClickListener listener) {
        ImageView iv = new ImageView(getContext());
        iv.setImageResource(res);
        setLeftView(iv, listener);
    }
    
}
1.设置标题
<pre name="code" class="java">header.setTitle(getResources().getString(R.string.getpwdback_title));
2.设置左边返回键及回调函数处理
<pre name="code" class="java">header.setLeftImageVewRes(R.drawable.head_left_return,
		new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				GetPWDBackActivity.this.finish();
			}
		});
3.设置右边图片及回调函数处理

 
<pre name="code" class="java">header.setRightImageViewRes(R.drawable.main_right_selector,
				new OnClickListener() {

					@Override
					public void onClick(View v) {
						OpenActivity(MapZyActivity.class);
					}
				});
那如果左边有多个图标或有图标及文字那该如何处理呢?
1.通过自定义view来实现
<pre name="code" class="java">View view=LayoutInflater.from(MainActivity.this).inflate(R.layout.ctrl_main_header_leftview, null);
    headerView.setLeftView(view, new OnClickListener() {

      @Override
      public void onClick(View v) {
        showCitySelector();
      }
    });
2.右边也是同理。


 



 


 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值