package com.mm.android.deviceaddmodule.mobilecommon.widget; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.annotation.DrawableRes; import android.support.annotation.StringRes; import android.util.AttributeSet; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.mm.android.deviceaddmodule.R; import com.mm.android.deviceaddmodule.mobilecommon.utils.UIUtils; /** *
* xml使用注意:需要在xml文件中使用style="@style/common_switch_titile" *
** 函数使用介绍: *
** initView(int left, int right, int midleft, int midright) 初始化控件:左按钮,中间左按钮,中间右按钮,右按钮,属于普通用法 *
*/ public class CommonSwitchTitle extends RelativeLayout { /** * 左侧按钮ID */ public static final int ID_LEFT = 0; /** * 右侧按钮ID */ public static final int ID_MID_LEFT = 1; /** * 左侧按钮ID */ public static final int ID_MID_RIGHT = 2; /** * 左侧按钮ID */ public static final int ID_RIGHT = 3; /** * 左侧按钮 */ private TextView mTitleLeftTv; private LinearLayout mTitleLeftLl; /** * 右侧按钮 */ private TextView mTitleRightTv; private LinearLayout mTitleRightLl; /** * 文字标题(左) */ private TextView mMidLeftTv; /** * 文字标题(右) */ private TextView mMidRightTv; /** * 点击监听 */ private OnTitleClickListener mListener; /** * 底部横线 */ private View mBottomV; /** * tab切换区域 */ private ViewGroup mSwitchBtnLl; /** * 标题 */ private TextView mTitleTv; /** * 记录中间的左右是文字还是图片,主要兼容国内外差异 */ private boolean mIsMidLeftDrawable; public CommonSwitchTitle(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.mobile_common_widget_switch_title, this); initView(); setListeners(); } private void initView() { mTitleLeftLl = findViewById(R.id.ll_title_left); mTitleRightLl = findViewById(R.id.ll_title_right); mTitleLeftTv = findViewById(R.id.tv_title_left); mTitleRightTv = findViewById(R.id.tv_title_right); mMidLeftTv = findViewById(R.id.tag_left); mMidRightTv = findViewById(R.id.tag_right); mBottomV = findViewById(R.id.bottom_divider); mTitleLeftTv.setTextColor(getResources().getColor(R.color.c0)); mTitleRightTv.setTextColor(getResources().getColor(R.color.c0)); mMidLeftTv.setTextColor(getResources().getColor(R.color.common_title_tab_text_color)); mMidRightTv.setTextColor(getResources().getColor(R.color.common_title_tab_text_color)); mTitleLeftTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources() .getDimensionPixelSize(R.dimen.mobile_common_text_size_mid)); mTitleRightTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.mobile_common_text_size_mid)); mMidLeftTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.text_size_mid)); mMidRightTv .setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.text_size_mid)); mSwitchBtnLl = findViewById(R.id.ll_switch_btn); mTitleTv = findViewById(R.id.tv_title_center); } public void setSelect(boolean isRight) { mSwitchBtnLl.setSelected(isRight); mMidLeftTv.setTextColor(isRight ? getResources().getColor(R.color.c5) : getResources().getColor(R.color.c0)); mMidRightTv.setTextColor(isRight?getResources().getColor(R.color.c0) : getResources().getColor(R.color.c5)); } /** * 切换标题栏展示样式 * * @param isSwitchMode */ public void changeTitleMode(boolean isSwitchMode) { if (isSwitchMode) { mSwitchBtnLl.setVisibility(VISIBLE); mTitleTv.setVisibility(GONE); } else { mSwitchBtnLl.setVisibility(GONE); mTitleTv.setVisibility(VISIBLE); } } /** * 设置标题栏中间内容 * * @param resId */ public void setTitleCenter(int resId) { mTitleTv.setText(getResources().getString(resId)); } private void setListeners() { mTitleLeftLl.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mListener != null) mListener.onCommonTitleClick(ID_LEFT); } }); mTitleRightLl.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mListener != null) mListener.onCommonTitleClick(ID_RIGHT); } }); mMidLeftTv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mIsMidLeftDrawable){ UIUtils.setEnabled(false, v); UIUtils.setEnabled(true, mMidRightTv); }else{ mSwitchBtnLl.setSelected(false); } if (mListener != null) mListener.onCommonTitleClick(ID_MID_LEFT); } }); mMidRightTv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mIsMidLeftDrawable){ UIUtils.setEnabled(false, v); UIUtils.setEnabled(true, mMidLeftTv); }else{ mSwitchBtnLl.setSelected(true); } if (mListener != null) mListener.onCommonTitleClick(ID_MID_RIGHT); } }); } /** * 初始化 * * @param left * @param right * @param midLeft * @param midRight */ public void initView(int left, int right, int midLeft, int midRight) { setTitleLeftView(left, 0, 0); setTitleRightView(right, 0, 0); Drawable drawable = null; try { drawable = getResources().getDrawable(midLeft); } catch (Exception e) { // e.printStackTrace(); } finally { if (drawable != null) { mIsMidLeftDrawable = true; setMidLeftImageSrc(midLeft); } else { mIsMidLeftDrawable = false; setMidLeftText(midLeft); } } try { drawable = getResources().getDrawable(midRight); } catch (Exception e) { // e.printStackTrace(); } finally { if (drawable != null) { setMidRightImageSrc(midRight); } else { setMidRightText(midRight); } } } /*-----------------------------------setTitleXXXView setMidXXXView START---------------------------------*/ public void setTitleLeftView(int resId, int colorId, int textSizeDimenId) { setTitleLeft(resId); setTextColorLeft(colorId); setTextSizeLeft(textSizeDimenId); } public void setTitleRightView(int resId, int colorId, int textSizeDimenId) { setTitleRight(resId); setTextColorRight(colorId); setTextSizeRight(textSizeDimenId); } /*-----------------------------------setTitleXXXView setMidXXXView END---------------------------------*/ /*------------------------------------------setTitle START------------------------------*/ public void setTitleLeft(int leftResId) { if (mTitleLeftTv != null) { if (leftResId != 0) { if (mTitleLeftLl != null && mTitleLeftLl.getVisibility() != View.VISIBLE) mTitleLeftLl.setVisibility(VISIBLE); Drawable drawable = null; try { drawable = getResources().getDrawable(leftResId); } catch (Exception e) { // e.printStackTrace(); } finally { if (drawable != null) { mTitleLeftTv.setBackgroundResource(leftResId); mTitleLeftTv.setText(null); } else { mTitleLeftTv.setText(leftResId); mTitleLeftTv.setBackgroundResource(0); } } } else { if (mTitleLeftLl != null) mTitleLeftLl.setVisibility(INVISIBLE); } } } public void setTitleRight(int rightResId) { if (mTitleRightTv != null) { if (rightResId != 0) { if (mTitleRightLl != null && mTitleRightLl.getVisibility() != View.VISIBLE) mTitleRightLl.setVisibility(VISIBLE); Drawable drawable = null; try { drawable = getResources().getDrawable(rightResId); } catch (Exception e) { // e.printStackTrace(); } finally { if (drawable != null) { mTitleRightTv.setBackgroundResource(rightResId); mTitleRightTv.setText(null); } else { mTitleRightTv.setText(rightResId); mTitleRightTv.setBackgroundResource(0); } } } else { if (mTitleRightLl != null) mTitleRightLl.setVisibility(INVISIBLE); } } } public void setMidLeftText(@StringRes int midLeftResId) { if (mMidLeftTv != null) { if (midLeftResId != 0) { if (mMidLeftTv.getVisibility() != View.VISIBLE) { mMidLeftTv.setVisibility(View.VISIBLE); } mMidLeftTv.setText(midLeftResId); } else { mMidLeftTv.setVisibility(INVISIBLE); } } } public void setMidLeftImageSrc(@DrawableRes int midLeftResId) { if (mMidLeftTv != null) { if (midLeftResId != 0) { if (mMidLeftTv.getVisibility() != View.VISIBLE) { mMidLeftTv.setVisibility(View.VISIBLE); } mMidLeftTv.setBackgroundResource(midLeftResId); } else { mMidLeftTv.setVisibility(INVISIBLE); } } } public void setMidRightText(@StringRes int midRightResId) { if (mMidRightTv != null) { if (midRightResId != 0) { if (mMidRightTv.getVisibility() != View.VISIBLE) { mMidRightTv.setVisibility(View.VISIBLE); } mMidRightTv.setText(midRightResId); } else { mMidRightTv.setVisibility(INVISIBLE); } } } public void setMidRightImageSrc(@DrawableRes int midRightResId) { if (mMidRightTv != null) { if (midRightResId != 0) { if (mMidRightTv.getVisibility() != View.VISIBLE) { mMidRightTv.setVisibility(View.VISIBLE); } mMidRightTv.setBackgroundResource(midRightResId); } else { mMidRightTv.setVisibility(INVISIBLE); } } } /*-----------------------------------------setTextColor START--------------------------------------*/ public void setTextColorLeft(int colorResId) { if (mTitleLeftTv != null) { mTitleLeftTv.setTextColor(colorResId != 0 ? getResources().getColor(colorResId) : getResources().getColor( R.color.c0)); } } public void setTextColorRight(int colorResId) { if (mTitleRightTv != null) { mTitleRightTv.setTextColor(colorResId != 0 ? getResources().getColor(colorResId) : getResources().getColor( R.color.c0)); } } /*-----------------------------------------setTextColor END--------------------------------------*/ /*-----------------------------------------setTextSize START--------------------------------------*/ public void setTextSizeLeft(int textSizeDimenId) { if (mTitleLeftTv != null) { mTitleLeftTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSizeDimenId != 0 ? getResources().getDimensionPixelSize(textSizeDimenId) : getResources() .getDimensionPixelSize(R.dimen.mobile_common_text_size_mid)); } } public void setTextSizeRight(int textSizeDimenId) { if (mTitleRightTv != null) { mTitleRightTv.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSizeDimenId != 0 ? getResources().getDimensionPixelSize(textSizeDimenId) : getResources() .getDimensionPixelSize(R.dimen.mobile_common_text_size_mid)); } } /*-----------------------------------------setTextSize END--------------------------------------*/ /*-----------------------------------------setIcon START--------------------------------------*/ public void setIconLeft(int resId) { if (mTitleLeftLl != null) { if (mTitleLeftLl.getVisibility() != View.VISIBLE) { mTitleLeftLl.setVisibility(View.VISIBLE); } setTitleLeft(resId); } } public void setIconRight(int resId) { if (mTitleRightLl != null) { if (mTitleRightLl.getVisibility() != View.VISIBLE) { mTitleRightLl.setVisibility(View.VISIBLE); } setTitleRight(resId); } } public void setVisibleBottomDivider(int flag) { if (mBottomV != null) { mBottomV.setVisibility(flag); } } public void setEnabled(boolean enabled, int id) { View parent = findParentViewById(id); if (parent != null) { View v = findViewByID(id); if (v != null) { parent.setEnabled(enabled); v.setEnabled(enabled); } } } private View findParentViewById(int id) { switch (id) { case ID_LEFT: return mTitleLeftLl; case ID_RIGHT: return mTitleRightLl; default: return null; } } public View findViewByID(int id) { switch (id) { case ID_LEFT: return mTitleLeftTv; case ID_RIGHT: return mTitleRightTv; case ID_MID_LEFT: return mMidLeftTv; case ID_MID_RIGHT: return mMidRightTv; default: return null; } } public void setOnTitleClickListener(OnTitleClickListener listener) { mListener = listener; } public interface OnTitleClickListener { void onCommonTitleClick(int id); } }