From 1ea5a786e23b05cf226e0474060894cf4cd39247 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Mon, 25 Mar 2024 15:09:59 +0800 Subject: [PATCH] Set Default APN radio button's size to 48dp Which is the minimum tap size. Also set ApnPreference not selectable, since itspPrimary target and radio button could be selectable, but entire preference itself is not selectable. Fix: 330812055 Fix: 330290274 Test: manual - with APNs Change-Id: I651642e8a275932be6b8bcb365198e5dc1ad92f8 --- res/layout/apn_preference_layout.xml | 23 +++++---- .../settings/network/apn/ApnPreference.java | 47 +++++++++---------- .../settings/network/apn/ApnSettings.java | 6 +-- 3 files changed, 40 insertions(+), 36 deletions(-) mode change 100755 => 100644 src/com/android/settings/network/apn/ApnPreference.java mode change 100755 => 100644 src/com/android/settings/network/apn/ApnSettings.java diff --git a/res/layout/apn_preference_layout.xml b/res/layout/apn_preference_layout.xml index a958da1c233..d5362341b8b 100644 --- a/res/layout/apn_preference_layout.xml +++ b/res/layout/apn_preference_layout.xml @@ -57,14 +57,19 @@ - + + + + diff --git a/src/com/android/settings/network/apn/ApnPreference.java b/src/com/android/settings/network/apn/ApnPreference.java old mode 100755 new mode 100644 index dcc50cd18f7..7cc4823afed --- a/src/com/android/settings/network/apn/ApnPreference.java +++ b/src/com/android/settings/network/apn/ApnPreference.java @@ -49,7 +49,7 @@ public class ApnPreference extends Preference private static CompoundButton sCurrentChecked = null; private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private boolean mProtectFromCheckedChange = false; - private boolean mSelectable = true; + private boolean mDefaultSelectable = true; private boolean mHideDetails = false; /** @@ -57,6 +57,9 @@ public class ApnPreference extends Preference */ public ApnPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + // Primary target and radio button could be selectable, but entire preference itself is not + // selectable. + setSelectable(false); } /** @@ -80,25 +83,25 @@ public class ApnPreference extends Preference final RelativeLayout textArea = (RelativeLayout) view.findViewById(R.id.text_layout); textArea.setOnClickListener(this); - final View widget = view.findViewById(R.id.apn_radiobutton); - if ((widget != null) && widget instanceof RadioButton) { - final RadioButton rb = (RadioButton) widget; - if (mSelectable) { - rb.setOnCheckedChangeListener(this); + final RadioButton rb = view.itemView.requireViewById(R.id.apn_radiobutton); + if (mDefaultSelectable) { + view.itemView.requireViewById(R.id.apn_radio_button_frame).setOnClickListener((v) -> { + rb.performClick(); + }); + rb.setOnCheckedChangeListener(this); - final boolean isChecked = getKey().equals(sSelectedKey); - if (isChecked) { - sCurrentChecked = rb; - sSelectedKey = getKey(); - } - - mProtectFromCheckedChange = true; - rb.setChecked(isChecked); - mProtectFromCheckedChange = false; - rb.setVisibility(View.VISIBLE); - } else { - rb.setVisibility(View.GONE); + final boolean isChecked = getKey().equals(sSelectedKey); + if (isChecked) { + sCurrentChecked = rb; + sSelectedKey = getKey(); } + + mProtectFromCheckedChange = true; + rb.setChecked(isChecked); + mProtectFromCheckedChange = false; + rb.setVisibility(View.VISIBLE); + } else { + rb.setVisibility(View.GONE); } } @@ -167,12 +170,8 @@ public class ApnPreference extends Preference } } - public boolean getSelectable() { - return mSelectable; - } - - public void setSelectable(boolean selectable) { - mSelectable = selectable; + public void setDefaultSelectable(boolean defaultSelectable) { + mDefaultSelectable = defaultSelectable; } public void setSubId(int subId) { diff --git a/src/com/android/settings/network/apn/ApnSettings.java b/src/com/android/settings/network/apn/ApnSettings.java old mode 100755 new mode 100644 index c3feae82359..be906536dd6 --- a/src/com/android/settings/network/apn/ApnSettings.java +++ b/src/com/android/settings/network/apn/ApnSettings.java @@ -369,10 +369,10 @@ public class ApnSettings extends RestrictedSettingsFragment pref.setSummary(apn); } - final boolean selectable = + final boolean defaultSelectable = ((type == null) || type.contains(ApnSetting.TYPE_DEFAULT_STRING)); - pref.setSelectable(selectable); - if (selectable) { + pref.setDefaultSelectable(defaultSelectable); + if (defaultSelectable) { if ((mSelectedKey != null) && mSelectedKey.equals(key)) { pref.setChecked(); }