From b9b192aeaf9f69c99656dbceae47c9bfb34d5a26 Mon Sep 17 00:00:00 2001 From: nex3z Date: Sat, 18 Aug 2018 00:35:16 +0800 Subject: [PATCH] Add checkedButton attribute. --- gradle.properties | 2 +- .../togglebuttongroup/MultiSelectToggleGroup.java | 13 ++++++++++--- .../SingleSelectToggleGroup.java | 15 +++++++++++---- .../togglebuttongroup/ToggleButtonGroup.java | 3 +++ togglebuttongroup/src/main/res/values/attrs.xml | 1 + 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index 060239f..915dc07 100755 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,7 @@ org.gradle.jvmargs=-Xmx1536m # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -PUBLISH_VERSION=1.0.0 +PUBLISH_VERSION=1.1.7 USER_ORG=nex3z GROUP_ID=com.nex3z ARTIFACT_ID=toggle-button-group diff --git a/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/MultiSelectToggleGroup.java b/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/MultiSelectToggleGroup.java index 13f2126..f05c70b 100644 --- a/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/MultiSelectToggleGroup.java +++ b/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/MultiSelectToggleGroup.java @@ -37,15 +37,22 @@ public MultiSelectToggleGroup(Context context, AttributeSet attrs) { @Override protected void onFinishInflate() { super.onFinishInflate(); - if (mInitialCheckedId != View.NO_ID) { - setCheckedStateForView(mInitialCheckedId, true); + int initialCheckedId = mInitialCheckedId != View.NO_ID ? + mInitialCheckedId : mSilentInitialCheckedId; + if (initialCheckedId != View.NO_ID) { + setCheckedStateForView(initialCheckedId, true); } } @Override protected void onChildCheckedChange(T child, boolean isChecked) { checkSelectCount(); - notifyCheckedStateChange(child.getId(), isChecked); + + if (mSilentInitialCheckedId == child.getId()) { + mSilentInitialCheckedId = View.NO_ID; + } else { + notifyCheckedStateChange(child.getId(), isChecked); + } } public void check(int id) { diff --git a/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/SingleSelectToggleGroup.java b/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/SingleSelectToggleGroup.java index 3dac156..624abae 100644 --- a/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/SingleSelectToggleGroup.java +++ b/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/SingleSelectToggleGroup.java @@ -24,9 +24,11 @@ public SingleSelectToggleGroup(Context context, AttributeSet attrs) { @Override protected void onFinishInflate() { super.onFinishInflate(); - if (mInitialCheckedId != View.NO_ID) { - setCheckedStateForView(mInitialCheckedId, true); - setCheckedId(mInitialCheckedId); + int initialCheckedId = mInitialCheckedId != View.NO_ID ? + mInitialCheckedId : mSilentInitialCheckedId; + if (initialCheckedId != View.NO_ID) { + setCheckedStateForView(initialCheckedId, true); + setCheckedId(initialCheckedId, false); } } @@ -58,7 +60,12 @@ protected void onChildCheckedChange(T child, boolea setCheckedStateForView(mCheckedId, false); } int id = child.getId(); - setCheckedId(id); + if (mSilentInitialCheckedId == id) { + mSilentInitialCheckedId = View.NO_ID; + setCheckedId(id, false); + } else { + setCheckedId(id); + } } } diff --git a/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/ToggleButtonGroup.java b/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/ToggleButtonGroup.java index 93abdb0..837e58c 100755 --- a/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/ToggleButtonGroup.java +++ b/togglebuttongroup/src/main/java/com/nex3z/togglebuttongroup/ToggleButtonGroup.java @@ -16,6 +16,7 @@ public abstract class ToggleButtonGroup extends FlowLayout { private static final String LOG_TAG = ToggleButtonGroup.class.getSimpleName(); protected int mInitialCheckedId = View.NO_ID; + protected int mSilentInitialCheckedId = View.NO_ID; private OnCheckedChangeListener mCheckedStateTracker; private CompoundButton.OnCheckedChangeListener mCompoundButtonStateTracker; private PassThroughHierarchyChangeListener mPassThroughListener; @@ -35,6 +36,8 @@ public ToggleButtonGroup(Context context, AttributeSet attrs) { try { mInitialCheckedId = a.getResourceId(R.styleable.ToggleButtonGroup_tbgCheckedButton, View.NO_ID); + mSilentInitialCheckedId = a.getResourceId( + R.styleable.ToggleButtonGroup_android_checkedButton, View.NO_ID); } finally { a.recycle(); } diff --git a/togglebuttongroup/src/main/res/values/attrs.xml b/togglebuttongroup/src/main/res/values/attrs.xml index f2c3952..c5d989d 100755 --- a/togglebuttongroup/src/main/res/values/attrs.xml +++ b/togglebuttongroup/src/main/res/values/attrs.xml @@ -16,6 +16,7 @@ +