@@ -19,6 +19,12 @@ public class TwoCheckbox extends LinearLayout {
1919 private CheckBox mCheckBox1 ;
2020 private CheckBox mCheckBox2 ;
2121 private TextView mTextView ;
22+ //必选模式
23+ public static final int MODE_MANDATORY = 0 ;
24+ //可选模式
25+ public static final int MODE_OPTIONAL = 1 ;
26+ //模式
27+ private int mode = 0 ;
2228 private int checkInt = 0 ;
2329
2430
@@ -32,21 +38,32 @@ public TwoCheckbox(Context context, @Nullable AttributeSet attrs) {
3238 if (checkInt == 0 ) {
3339 mCheckBox1 .setChecked (true );
3440 mCheckBox2 .setChecked (false );
35- } else {
41+ } else if ( checkInt == 1 ) {
3642 mCheckBox1 .setChecked (false );
3743 mCheckBox2 .setChecked (true );
3844 }
45+
3946 mCheckBox1 .setOnCheckedChangeListener (new CompoundButton .OnCheckedChangeListener () {
4047 @ Override
4148 public void onCheckedChanged (CompoundButton buttonView , boolean isChecked ) {
42- if (isChecked ) {
43- mCheckBox2 .setChecked (false );
44- checkInt = 0 ;
49+ if (mode == MODE_MANDATORY ) {
50+ if (isChecked ) {
51+ mCheckBox2 .setChecked (false );
52+ checkInt = 0 ;
53+
54+ } else {
55+ mCheckBox2 .setChecked (true );
56+ checkInt = 1 ;
57+ }
58+
59+ } else if (mode == MODE_OPTIONAL ) {
60+ if (isChecked ) {
61+ mCheckBox2 .setChecked (false );
62+ checkInt = 0 ;
63+ }
4564
46- } else {
47- mCheckBox2 .setChecked (true );
48- checkInt = 1 ;
4965 }
66+
5067 if (mOnCheckListener != null ) {
5168 mOnCheckListener .getCheckInt (checkInt );
5269 }
@@ -56,13 +73,23 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
5673 mCheckBox2 .setOnCheckedChangeListener (new CompoundButton .OnCheckedChangeListener () {
5774 @ Override
5875 public void onCheckedChanged (CompoundButton buttonView , boolean isChecked ) {
59- if (isChecked ) {
60- mCheckBox1 .setChecked (false );
61- checkInt = 1 ;
62- } else {
63- mCheckBox1 .setChecked (true );
64- checkInt = 0 ;
76+ if (mode == MODE_MANDATORY ) {
77+ if (isChecked ) {
78+ mCheckBox1 .setChecked (false );
79+ checkInt = 1 ;
80+ } else {
81+ mCheckBox1 .setChecked (true );
82+ checkInt = 0 ;
83+ }
84+
85+ } else if (mode == MODE_OPTIONAL ) {
86+ if (isChecked ) {
87+ mCheckBox1 .setChecked (false );
88+ checkInt = 1 ;
89+ }
90+
6591 }
92+
6693 if (mOnCheckListener != null ) {
6794 mOnCheckListener .getCheckInt (checkInt );
6895 }
@@ -130,9 +157,11 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
130157 .TextTwoCheckBox_checkbox2_text_size , LinearLayout .LayoutParams
131158 .WRAP_CONTENT );
132159 mCheckBox2 .setTextSize (chechbox2_textsize );
160+
133161 attributes .recycle ();
134162 }
135163
164+
136165 }
137166
138167 /**
@@ -161,10 +190,24 @@ public void setCheckInt(int checkInt) {
161190 } else if (checkInt == 1 ) {
162191 mCheckBox1 .setChecked (false );
163192 mCheckBox2 .setChecked (true );
193+ } else if (checkInt == 2 ) {
194+ mCheckBox1 .setChecked (false );
195+ mCheckBox2 .setChecked (false );
164196 }
165197 this .checkInt = checkInt ;
166198 }
167199
200+ /**
201+ * 设置模式
202+ * 必选模式 MODE_MANDATORY = 0;
203+ //可选模式
204+ public static final int MODE_OPTIONAL = 1;
205+ * @param mode
206+ */
207+ public void setMode (int mode ) {
208+ this .mode = mode ;
209+ }
210+
168211 /**
169212 * 获取选中的CheckBox
170213 * 1:左边CheckBox
0 commit comments