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;
|
|
|
/**
|
* <p>
|
* xml使用注意:需要在xml文件中使用style="@style/common_switch_titile"
|
* </p>
|
* <p>
|
* 函数使用介绍:
|
* </p>
|
* <p>
|
* initView(int left, int right, int midleft, int midright) 初始化控件:左按钮,中间左按钮,中间右按钮,右按钮,属于普通用法
|
* </p>
|
*/
|
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);
|
}
|
}
|