package com.example.myradiobtn; |
import android.content.Context; |
import android.util.AttributeSet; |
import android.view.LayoutInflater; |
import android.view.View; |
import android.widget.LinearLayout; |
import android.widget.RadioButton; |
import android.widget.RadioGroup; |
import android.widget.RadioGroup.OnCheckedChangeListener; |
/** |
* 控件 |
* |
* @author Luo.Yunlongx |
* |
*/ |
public class MyChoose extends LinearLayout { |
private Context mContext; |
private View mView; |
private RadioGroup mRadioGroup; |
private RadioButton mLeftRadioButton; |
private RadioButton mRightRadioButton; |
private LayoutParams mLayoutParams; |
/** |
* 构造方法 |
* |
* @param context |
* @param attrs |
* @param defStyle |
*/ |
public MyChoose(Context context, AttributeSet attrs, int defStyle) { |
super (context, attrs); |
this .mContext = context; |
init(); |
} |
/** |
* 构造方法 |
* |
* @param context |
* @param attrs |
*/ |
public MyChoose(Context context, AttributeSet attrs) { |
super (context, attrs); |
this .mContext = context; |
init(); |
} |
/** |
* 构造方法 |
* |
* @param context |
*/ |
public MyChoose(Context context) { |
super (context); |
this .mContext = context; |
init(); |
} |
/** |
* 初始化 |
*/ |
private void init() { |
mView = LayoutInflater.from(mContext).inflate(R.layout.view_mychoose, |
null ); |
mLeftRadioButton = (RadioButton) mView |
.findViewById(R.id.mychoose_radioButton1); |
mRightRadioButton = (RadioButton) mView |
.findViewById(R.id.mychoose_radioButton2); |
mRadioGroup = (RadioGroup) mView.findViewById(R.id.mychoose_radioGroup); |
mLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, |
LayoutParams.WRAP_CONTENT); |
mView.setLayoutParams(mLayoutParams); |
this .setLayoutParams(mLayoutParams); |
this .addView(mView); |
} |
/** |
* 设置显示的文字 |
* |
* @param leftText |
* 左侧文字 |
* @param rightText |
* 右侧文字 |
*/ |
public void setTexts(String leftText, String rightText) { |
mLeftRadioButton.setText(leftText); |
mRightRadioButton.setText(rightText); |
} |
/** |
* 设置点击事件 |
* |
* @param mOnCheckedChange |
*/ |
public void setOnClick( final IOnCheckedChange mOnCheckedChange, final int id) { |
mRadioGroup.setOnCheckedChangeListener( new OnCheckedChangeListener() { |
@Override |
public void onCheckedChanged(RadioGroup group, int checkedId) { |
switch (checkedId) { |
case R.id.mychoose_radioButton1: |
/* 改变字的颜色 */ |
mLeftRadioButton.setTextColor(mContext.getResources() |
.getColor(android.R.color.white)); |
mRightRadioButton.setTextColor(mContext.getResources() |
.getColor(android.R.color.black)); |
/** |
* 选中左侧时的事件 |
*/ |
if (mOnCheckedChange != null ) { |
mOnCheckedChange.leftOnClick(id); |
} |
break ; |
case R.id.mychoose_radioButton2: |
/* 改变字的颜色 */ |
mRightRadioButton.setTextColor(mContext.getResources() |
.getColor(android.R.color.white)); |
mLeftRadioButton.setTextColor(mContext.getResources() |
.getColor(android.R.color.black)); |
/** |
* 选中右侧时的事件 |
*/ |
if (mOnCheckedChange != null ) { |
mOnCheckedChange.rightOnClick(id); |
} |
break ; |
} |
} |
}); |
} |
/** |
* 是否第一个选中 |
* |
* @param leftSelected |
*/ |
public void setChoose( boolean leftSelected) { |
mLeftRadioButton.setSelected(leftSelected); |
mRightRadioButton.setSelected(!leftSelected); |
} |
/** |
* |
* 自己写个接口,处理RadioGroup.setOnCheckedChangeListener相应 |
* |
* @author Luo.Yunlongx |
* |
*/ |
public interface IOnCheckedChange { |
/** |
* 左侧被选中 |
* |
* @param id |
* 区分事件源 |
*/ |
public void leftOnClick( int id); |
/** |
* 右侧被选中 |
* |
* @param id |
* 区分事件源 |
*/ |
public void rightOnClick( int id); |
} |
} |