OSDN Git Service

Fix accessibility for account sync
authorJason Monk <jmonk@google.com>
Thu, 25 Jun 2015 19:03:26 +0000 (15:03 -0400)
committerJason Monk <jmonk@google.com>
Thu, 25 Jun 2015 19:06:00 +0000 (15:06 -0400)
Needed to get views recycling so that feedback could occur during
switch turning off.

Bug: 20020216
Change-Id: Ib7b1cdca78f5ac5064cdf521122ff7a5ee49f572

res/values/styles.xml
res/xml/account_sync_settings.xml
src/com/android/settings/accounts/AccountSyncSettings.java
src/com/android/settings/accounts/SyncStateSwitchPreference.java

index ef1dbc8..65b5d77 100644 (file)
         <item name="android:layout">@layout/preference_material_settings</item>
     </style>
 
+    <style name="SyncSwitchPreference" parent="Preference">
+        <item name="android:widgetLayout">@layout/preference_widget_sync_toggle</item>
+    </style>
+
     <style name="PreferenceHeaderPanelSinglePane">
         <item name="android:layout_marginStart">0dp</item>
         <item name="android:layout_marginEnd">0dp</item>
index 0ec46b7..ab274eb 100644 (file)
@@ -16,4 +16,9 @@
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
+    <!-- Needed so PreferenceGroupAdapter allows SyncStateSwitchPreference to be
+         recycled. Removed in onResume -->
+    <com.android.settings.accounts.SyncStateSwitchPreference
+        android:key="dummy" />
+
 </PreferenceScreen>
index 2de8e4a..d1df82a 100644 (file)
@@ -149,6 +149,8 @@ public class AccountSyncSettings extends AccountPreferenceBase {
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
+        setPreferenceScreen(null);
+        addPreferencesFromResource(R.xml.account_sync_settings);
 
         setHasOptionsMenu(true);
     }
@@ -167,8 +169,6 @@ public class AccountSyncSettings extends AccountPreferenceBase {
     }
 
     protected void initializeUi(final View rootView) {
-        addPreferencesFromResource(R.xml.account_sync_settings);
-
         mErrorInfoView = (TextView) rootView.findViewById(R.id.sync_settings_error_info);
         mErrorInfoView.setVisibility(View.GONE);
 
@@ -202,6 +202,7 @@ public class AccountSyncSettings extends AccountPreferenceBase {
 
     @Override
     public void onResume() {
+        removePreference("dummy");
         mAuthenticatorHelper.listenToAccountUpdates();
         updateAuthDescriptions();
         onAccountsUpdate(UserHandle.getCallingUserHandle());
@@ -540,7 +541,6 @@ public class AccountSyncSettings extends AccountPreferenceBase {
             mProviderIcon.setImageDrawable(getDrawableForType(mAccount.type));
             mProviderId.setText(getLabelForType(mAccount.type));
         }
-        addPreferencesFromResource(R.xml.account_sync_settings);
     }
 
     @Override
index 4d63870..fd0c45c 100644 (file)
@@ -23,6 +23,7 @@ import android.preference.SwitchPreference;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.TextView;
 
 import com.android.settings.R;
@@ -43,17 +44,15 @@ public class SyncStateSwitchPreference extends SwitchPreference {
     private boolean mOneTimeSyncMode = false;
 
     public SyncStateSwitchPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        setWidgetLayoutResource(R.layout.preference_widget_sync_toggle);
+        super(context, attrs, 0, R.style.SyncSwitchPreference);
         mAccount = null;
         mAuthority = null;
     }
 
     public SyncStateSwitchPreference(Context context, Account account, String authority) {
-        super(context, null);
+        super(context, null, 0, R.style.SyncSwitchPreference);
         mAccount = account;
         mAuthority = authority;
-        setWidgetLayoutResource(R.layout.preference_widget_sync_toggle);
     }
 
     @Override