diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml index 4a8211f98c1..c1459385c51 100644 --- a/res/xml/display_settings.xml +++ b/res/xml/display_settings.xml @@ -19,7 +19,6 @@ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"> diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java index dbef6cb7851..1d4181600fe 100644 --- a/src/com/android/settings/DataUsageSummary.java +++ b/src/com/android/settings/DataUsageSummary.java @@ -360,8 +360,7 @@ public class DataUsageSummary extends HighlightingFragment implements Indexable mDataEnabled = new Switch(inflater.getContext()); mDataEnabledView = inflatePreference(inflater, mNetworkSwitches, mDataEnabled); - mDataEnabledView.setTag(R.id.preference_highlight_key, - DATA_USAGE_ENABLE_MOBILE_KEY); + mDataEnabledView.setTag(DATA_USAGE_ENABLE_MOBILE_KEY); mDataEnabled.setOnCheckedChangeListener(mDataEnabledListener); mNetworkSwitches.addView(mDataEnabledView); @@ -369,8 +368,7 @@ public class DataUsageSummary extends HighlightingFragment implements Indexable mDisableAtLimit.setClickable(false); mDisableAtLimit.setFocusable(false); mDisableAtLimitView = inflatePreference(inflater, mNetworkSwitches, mDisableAtLimit); - mDisableAtLimitView.setTag(R.id.preference_highlight_key, - DATA_USAGE_DISABLE_MOBILE_LIMIT_KEY); + mDisableAtLimitView.setTag(DATA_USAGE_DISABLE_MOBILE_LIMIT_KEY); mDisableAtLimitView.setClickable(true); mDisableAtLimitView.setFocusable(true); mDisableAtLimitView.setOnClickListener(mDisableAtLimitListener); @@ -379,7 +377,7 @@ public class DataUsageSummary extends HighlightingFragment implements Indexable // bind cycle dropdown mCycleView = mHeader.findViewById(R.id.cycles); - mCycleView.setTag(R.id.preference_highlight_key, DATA_USAGE_CYCLE_KEY); + mCycleView.setTag(DATA_USAGE_CYCLE_KEY); mCycleSpinner = (Spinner) mCycleView.findViewById(R.id.cycles_spinner); mCycleAdapter = new CycleAdapter(context); mCycleSpinner.setAdapter(mCycleAdapter); diff --git a/src/com/android/settings/HighlightingFragment.java b/src/com/android/settings/HighlightingFragment.java index 4a233b4228a..1424abdab7d 100644 --- a/src/com/android/settings/HighlightingFragment.java +++ b/src/com/android/settings/HighlightingFragment.java @@ -116,7 +116,7 @@ public class HighlightingFragment extends Fragment { } private boolean checkTag(View view, String key) { - final Object tag = view.getTag(R.id.preference_highlight_key); + final Object tag = view.getTag(); if (tag == null || !(tag instanceof String)) { return false; } diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index eb2bea9e8f3..67432c0f9f5 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -204,6 +204,19 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di }, DELAY_HIGHLIGHT_DURATION_MILLIS); } }); + } else { + // Try locating the Preference View thru its tag + View preferenceView = findPreferenceViewForKey(getView(), key); + if (preferenceView != null ) { + mPreferenceHighlighted = true; + + preferenceView.setBackground(highlight); + final int centerX = preferenceView.getWidth() / 2; + final int centerY = preferenceView.getHeight() / 2; + highlight.setHotspot(centerX, centerY); + preferenceView.setPressed(true); + preferenceView.setPressed(false); + } } } @@ -222,6 +235,33 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di return -1; } + private View findPreferenceViewForKey(View root, String key) { + if (checkTag(root, key)) { + return root; + } + if (root instanceof ViewGroup) { + final ViewGroup group = (ViewGroup) root; + final int count = group.getChildCount(); + for (int n = 0; n < count; n++) { + final View child = group.getChildAt(n); + final View view = findPreferenceViewForKey(child, key); + if (view != null) { + return view; + } + } + } + return null; + } + + private boolean checkTag(View view, String key) { + final Object tag = view.getTag(); + if (tag == null || !(tag instanceof String)) { + return false; + } + final String prefKey = (String) tag; + return (!TextUtils.isEmpty(prefKey) && prefKey.equals(key)); + } + protected void removePreference(String key) { Preference pref = findPreference(key); if (pref != null) {