package cn.sinata.xldutils.view;
|
|
import android.annotation.TargetApi;
|
import android.content.Context;
|
import android.content.res.ColorStateList;
|
import android.content.res.TypedArray;
|
import android.graphics.Color;
|
import android.os.Build;
|
import android.text.TextUtils;
|
import android.util.AttributeSet;
|
import android.util.TypedValue;
|
import android.view.Gravity;
|
import android.view.ViewGroup;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import cn.sinata.xldutils.R;
|
import cn.sinata.xldutils.utils.DensityUtil;
|
|
/**
|
*
|
* Created by liaoxiang on 16/3/23.
|
*/
|
public class TwoTextLinearView extends LinearLayout{
|
|
private TextView leftView;
|
private TextView rightView;
|
private ColorStateList leftColor;
|
private ColorStateList rightColor;
|
|
public TwoTextLinearView(Context context) {
|
super(context);
|
init(context,null);
|
}
|
|
public TwoTextLinearView(Context context, AttributeSet attrs) {
|
super(context, attrs);
|
init(context,attrs);
|
}
|
|
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
public TwoTextLinearView(Context context, AttributeSet attrs, int defStyleAttr) {
|
super(context, attrs, defStyleAttr);
|
init(context,attrs);
|
}
|
|
void init(Context context,AttributeSet attrs){
|
if (isInEditMode()) {
|
return;
|
}
|
|
int padding = DensityUtil.dip2px(getContext(),16);
|
setPadding(padding,padding,padding,padding);
|
setBackgroundColor(Color.WHITE);
|
setOrientation(HORIZONTAL);
|
leftView = new TextView(getContext());
|
leftView.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
|
leftView.setSingleLine(true);
|
leftView.setGravity(Gravity.CENTER_VERTICAL);
|
rightView = new TextView(getContext());
|
LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
params.leftMargin = padding;
|
rightView.setLayoutParams(params);
|
//以下此3句等同singleLine。
|
rightView.setMaxLines(1);
|
rightView.setEllipsize(TextUtils.TruncateAt.END);
|
rightView.setHorizontallyScrolling(true);
|
rightView.setGravity(Gravity.CENTER);
|
|
CharSequence leftText=null;
|
CharSequence rightText=null;
|
int leftTextSize = 14;
|
int rightTextSize = 14;
|
int gravity = Gravity.LEFT;
|
boolean showArrow = false;
|
int drawableLeft = 0;
|
int drawableRight = 0;
|
int drawablePadding = 0;
|
if (attrs!=null){
|
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TwoTextLinearView);
|
leftColor = a.getColorStateList(R.styleable.TwoTextLinearView_leftTextColor);
|
rightColor = a.getColorStateList(R.styleable.TwoTextLinearView_rightTextColor);
|
leftText = a.getText(R.styleable.TwoTextLinearView_leftText);
|
rightText = a.getText(R.styleable.TwoTextLinearView_rightText);
|
leftTextSize = a.getDimensionPixelSize(R.styleable.TwoTextLinearView_leftTextSize,14);
|
rightTextSize = a.getDimensionPixelSize(R.styleable.TwoTextLinearView_rightTextSize,14);
|
gravity = a.getInteger(R.styleable.TwoTextLinearView_rightGravity,Gravity.LEFT);
|
showArrow = a.getBoolean(R.styleable.TwoTextLinearView_showArrow,false);
|
drawableLeft = a.getResourceId(R.styleable.TwoTextLinearView_leftDrawable,0);
|
drawableRight = a.getResourceId(R.styleable.TwoTextLinearView_rightDrawable,0);
|
drawablePadding = a.getDimensionPixelSize(R.styleable.TwoTextLinearView_drawablePadding,padding/8);
|
a.recycle();
|
}
|
|
leftView.setTextColor(leftColor != null ? leftColor : ColorStateList.valueOf(0xFF333333));
|
rightView.setTextColor(rightColor != null ? rightColor : ColorStateList.valueOf(0xFFababab));
|
rightView.setGravity(gravity);
|
if (leftText!=null) {
|
leftView.setText(leftText);
|
}
|
if (showArrow){
|
rightView.setCompoundDrawablesWithIntrinsicBounds(0,0,R.mipmap.right_arrow,0);
|
}else {
|
rightView.setCompoundDrawablesWithIntrinsicBounds(0,0,drawableRight,0);
|
}
|
rightView.setCompoundDrawablePadding(drawablePadding);
|
leftView.setCompoundDrawablesWithIntrinsicBounds(drawableLeft,0,0,0);
|
leftView.setCompoundDrawablePadding(drawablePadding);
|
if (rightText != null) {
|
rightView.setText(rightText);
|
}
|
leftView.setTextSize(TypedValue.COMPLEX_UNIT_SP,leftTextSize);
|
rightView.setTextSize(TypedValue.COMPLEX_UNIT_SP,rightTextSize);
|
addView(leftView);
|
addView(rightView);
|
}
|
|
/**
|
* 设置上边文字大小
|
* @param size 默认单位sp
|
*/
|
public void setLeftTextSize(int size){
|
leftView.setTextSize(TypedValue.COMPLEX_UNIT_SP,size);
|
}
|
/**
|
* 设置下边文字大小
|
* @param size 默认单位sp
|
*/
|
public void setRightTextSize(int size){
|
rightView.setTextSize(TypedValue.COMPLEX_UNIT_SP,size);
|
}
|
|
/**
|
* 设置上边文字
|
* @param s 文字
|
*/
|
public void setLeftText(CharSequence s){
|
leftView.setText(s);
|
}
|
/**
|
* 设置下边文字
|
* @param s 文字
|
*/
|
public void setRightText(CharSequence s){
|
rightView.setText(s);
|
}
|
|
/**
|
* 设置上边文字颜色
|
* @param color 颜色
|
*/
|
public void setLeftTextColor(int color){
|
leftView.setTextColor(color);
|
}
|
|
/**
|
* 设置下边文字颜色
|
* @param color 颜色
|
*/
|
public void setRightTextColor(int color){
|
rightView.setTextColor(color);
|
}
|
}
|