公共的标题栏构造器

标题栏布局文件,一般包含三部分,左边、中间和右边,左右两边可能是文字,也可能是图片,中间部分是文字。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/common_titlebar"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:background="@color/white"
    android:layout_alignParentTop="true"
    android:orientation="horizontal" >
    
    <RelativeLayout
        android:id="@+id/common_titlebar_iv_left_layout"
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
         >

        <ImageView
           android:id="@+id/common_titlebar_iv_left"
           android:layout_width="30dp"
           android:layout_height="30dp"
           android:src="@drawable/back"
           android:layout_centerInParent="true" />
    </RelativeLayout>

    <TextView
        android:id="@+id/common_titlebar_tv_left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:gravity="center_vertical"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:textColor="@color/username_textcolor"
        android:textSize="16sp"
        android:visibility="gone" />

    <TextView
        android:id="@+id/common_titlebar_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:singleLine="true"
        android:ellipsize="end"
        android:gravity="center"
        android:textColor="@color/username_textcolor"
        android:visibility="gone"
        android:textSize="18sp" />
    
    <RelativeLayout
        android:id="@+id/common_titlebar_iv_right_layout"
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:visibility="gone" >

        <ImageView
            android:id="@+id/common_titlebar_iv_right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />
    </RelativeLayout>


    <TextView
        android:id="@+id/common_titlebar_tv_right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:gravity="center_vertical"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:textColor="@color/username_textcolor"
        android:textSize="16sp"
        android:visibility="gone" />

    <View
        android:id="@+id/common_titlebar_divider"
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:layout_alignParentBottom="true"
        android:background="@color/line" />

</RelativeLayout>

Builder设计模式


public class TitleBuilder {

	private View viewTitle;
	private TextView tvTitle;
	private ImageView ivLeft;
	private ImageView ivRight;
	private TextView tvLeft;
	private TextView tvRight;
	private RelativeLayout layoutLeft;
	private RelativeLayout layoutRight;
	private View divider;
	
	private void findView() {
		tvTitle = (TextView) viewTitle.findViewById(R.id.common_titlebar_tv);
		ivLeft = (ImageView) viewTitle.findViewById(R.id.common_titlebar_iv_left);
		ivRight = (ImageView) viewTitle.findViewById(R.id.common_titlebar_iv_right);
		tvLeft = (TextView) viewTitle.findViewById(R.id.common_titlebar_tv_left);
		tvRight = (TextView) viewTitle.findViewById(R.id.common_titlebar_tv_right);
		layoutLeft = (RelativeLayout) viewTitle.findViewById(R.id.common_titlebar_iv_left_layout);
		layoutRight = (RelativeLayout) viewTitle.findViewById(R.id.common_titlebar_iv_right_layout);
		divider = viewTitle.findViewById(R.id.common_titlebar_divider);
	}
	
	public TitleBuilder(Activity context) {
		viewTitle = context.findViewById(R.id.common_titlebar);
		findView();
	}

	public TitleBuilder(View context) {
		viewTitle = context.findViewById(R.id.common_titlebar);
		findView();
	}

	// 设置title背景
	public TitleBuilder setTitleBgRes(int resid) {
		viewTitle.setBackgroundResource(resid);
		return this;
	}

	// 设置title文字
	public TitleBuilder setTitleText(String text) {
		tvTitle.setVisibility(TextUtils.isEmpty(text) ? View.GONE
				: View.VISIBLE);
		tvTitle.setText(text);
		return this;
	}
	
	// 设置title文字颜色
	public TitleBuilder setTitleTextColor(int resid) {
		tvTitle.setTextColor(resid);
		return this;
	}

	//设置left图片资源
	public TitleBuilder setLeftImage(int resId) {
		layoutLeft.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);
		ivLeft.setImageResource(resId);
		return this;
	}

	//设置left文字--如果文字不为空则将左边的图片隐藏
	public TitleBuilder setLeftText(String text) {
		tvLeft.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE);
		tvLeft.setText(text);
		layoutLeft.setVisibility(TextUtils.isEmpty(text) ? View.VISIBLE : View.GONE);
		return this;
	}
	
	//左边谁显示给谁设置监听器
	public TitleBuilder setLeftOnClickListener(OnClickListener listener) {
		if (layoutLeft.getVisibility() == View.VISIBLE) {
			layoutLeft.setOnClickListener(listener);
		} else if (tvLeft.getVisibility() == View.VISIBLE) {
			tvLeft.setOnClickListener(listener);
		}
		return this;
	}

	//设置right图片资源
	public TitleBuilder setRightImage(int resId) {
		layoutRight.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);
		ivRight.setImageResource(resId);
		return this;
	}

	//设置right文字
	public TitleBuilder setRightText(String text) {
		tvRight.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE);
		tvRight.setText(text);
		return this;
	}
	
	//设置分割线是否显示
	public TitleBuilder setDividerVisibility(int visibility) {
		divider.setVisibility(visibility);
		return this;
	}
	
	//右边谁显示给谁设置监听器
	public TitleBuilder setRightOnClickListener(OnClickListener listener) {
		if (layoutRight.getVisibility() == View.VISIBLE) {
			layoutRight.setOnClickListener(listener);
		} else if (tvRight.getVisibility() == View.VISIBLE) {
			tvRight.setOnClickListener(listener);
		}
		return this;
	}

	public View build() {
		return viewTitle;
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值