package com.hpw.mvpframe.utils; import android.app.Activity; import android.content.Context; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.TextView; import com.hpw.mvpframe.R; /** * 标题栏构造器,使用方法 new TitleBuilder().setMethod().setMethod()...... * <p/> * 统一格式为标题文字,左右各自是文字/图片按钮 * 按钮都默认不显示,只有在你调用setLeftText时才会显示左侧按钮文字,图片同理 * 图片或文字的点击事件都用Left/RightOnClickListener */ public class TitleBuilder { private View rootView; private TextView tvTitle; private ImageView ivLeft; private ImageView ivRight; private TextView tvLeft; private TextView tvRight; public View getRootView() { return rootView; } public TextView getTvTitle() { return tvTitle; } public ImageView getIvLeft() { return ivLeft; } public ImageView getIvRight() { return ivRight; } public TextView getTvLeft() { return tvLeft; } public TextView getTvRight() { return tvRight; } /** * Activity中使用这个构造方法 */ public TitleBuilder(Activity context) { rootView = context.findViewById(R.id.rl_titlebar); if (rootView == null) { return; } tvTitle = (TextView) rootView.findViewById(R.id.titlebar_tv); ivLeft = (ImageView) rootView.findViewById(R.id.titlebar_iv_left); ivRight = (ImageView) rootView.findViewById(R.id.titlebar_iv_right); tvLeft = (TextView) rootView.findViewById(R.id.titlebar_tv_left); tvRight = (TextView) rootView.findViewById(R.id.titlebar_tv_right); } /** * Fragment中使用这个构造方法 */ public TitleBuilder(View context) { rootView = context.findViewById(R.id.rl_titlebar); if (rootView == null) { return; } tvTitle = (TextView) rootView.findViewById(R.id.titlebar_tv); ivLeft = (ImageView) rootView.findViewById(R.id.titlebar_iv_left); ivRight = (ImageView) rootView.findViewById(R.id.titlebar_iv_right); tvLeft = (TextView) rootView.findViewById(R.id.titlebar_tv_left); tvRight = (TextView) rootView.findViewById(R.id.titlebar_tv_right); } // title public TitleBuilder setTitleBgRes(int resid) { rootView.setBackgroundResource(resid); return this; } public TitleBuilder setTitleText(String text) { tvTitle.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE); tvTitle.setText(text); return this; } // left public TitleBuilder setLeftImage(int resId) { ivLeft.setVisibility(resId > 0 ? View.VISIBLE : View.GONE); ivLeft.setImageResource(resId); return this; } public TitleBuilder setLeftText(String text) { tvLeft.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE); tvLeft.setText(text); return this; } public TitleBuilder setLeftOnClickListener(OnClickListener listener) { if (ivLeft.getVisibility() == View.VISIBLE) { ivLeft.setOnClickListener(listener); } else if (tvLeft.getVisibility() == View.VISIBLE) { tvLeft.setOnClickListener(listener); } return this; } // right public TitleBuilder setRightImage(int resId) { ivRight.setVisibility(resId > 0 ? View.VISIBLE : View.GONE); ivRight.setImageResource(resId); return this; } public TitleBuilder setRightText(String text) { tvRight.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE); tvRight.setText(text); return this; } public TitleBuilder setRightTextColor(Context context, int resId) { tvRight.setTextColor(context.getResources().getColor(resId)); return this; } public TitleBuilder setTitleTextColor(Context context, int resId) { tvTitle.setTextColor(context.getResources().getColor(resId)); return this; } public TitleBuilder setRightOnClickListener(OnClickListener listener) { if (ivRight.getVisibility() == View.VISIBLE) { ivRight.setOnClickListener(listener); } else if (tvRight.getVisibility() == View.VISIBLE) { tvRight.setOnClickListener(listener); } return this; } public View build() { return rootView; } }