Skip to content

Commit 8f22fa8

Browse files
author
admin
committed
新建可选和必选模式,可根据实际需求改动
1 parent 73163d4 commit 8f22fa8

File tree

3 files changed

+61
-14
lines changed

3 files changed

+61
-14
lines changed

app/src/main/java/com/pineteree/twocheckboxdemo/MainActivity.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@ protected void onCreate(Bundle savedInstanceState) {
2121
* 0:左边CheckBox
2222
* 1:右边CheckBox
2323
*/
24-
mTwoCheckbox.setCheckInt(1);
24+
mTwoCheckbox.setMode(TwoCheckbox.MODE_MANDATORY);
25+
mTwoCheckbox.setCheckInt(2);
2526

27+
int checkInt = mTwoCheckbox.getCheckInt();
28+
Log.d("checkInt", checkInt + "");
2629
/**
2730
*点击事件
2831
*/

twocheckboxlibrary/src/main/java/com/pineteree/twocheckboxlibrary/TwoCheckbox.java

Lines changed: 56 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

twocheckboxlibrary/src/main/res/values/attrs.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@
1313
<attr name="checkbox2_text_color" format="color"/>
1414
<attr name="checkbox2_text_size" format="dimension"/>
1515

16+
1617
</declare-styleable>
1718
</resources>

0 commit comments

Comments
 (0)