Fix accessibility for account sync

Needed to get views recycling so that feedback could occur during
switch turning off.

Bug: 20020216
Change-Id: Ib7b1cdca78f5ac5064cdf521122ff7a5ee49f572
This commit is contained in:
Jason Monk
2015-06-25 15:03:26 -04:00
parent 91ba69df7e
commit fb6e1186ab
4 changed files with 15 additions and 7 deletions

View File

@@ -97,6 +97,10 @@
<item name="android:layout">@layout/preference_material_settings</item> <item name="android:layout">@layout/preference_material_settings</item>
</style> </style>
<style name="SyncSwitchPreference" parent="Preference">
<item name="android:widgetLayout">@layout/preference_widget_sync_toggle</item>
</style>
<style name="PreferenceHeaderPanelSinglePane"> <style name="PreferenceHeaderPanelSinglePane">
<item name="android:layout_marginStart">0dp</item> <item name="android:layout_marginStart">0dp</item>
<item name="android:layout_marginEnd">0dp</item> <item name="android:layout_marginEnd">0dp</item>

View File

@@ -16,4 +16,9 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <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> </PreferenceScreen>

View File

@@ -149,6 +149,8 @@ public class AccountSyncSettings extends AccountPreferenceBase {
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
setPreferenceScreen(null);
addPreferencesFromResource(R.xml.account_sync_settings);
setHasOptionsMenu(true); setHasOptionsMenu(true);
} }
@@ -167,8 +169,6 @@ public class AccountSyncSettings extends AccountPreferenceBase {
} }
protected void initializeUi(final View rootView) { protected void initializeUi(final View rootView) {
addPreferencesFromResource(R.xml.account_sync_settings);
mErrorInfoView = (TextView) rootView.findViewById(R.id.sync_settings_error_info); mErrorInfoView = (TextView) rootView.findViewById(R.id.sync_settings_error_info);
mErrorInfoView.setVisibility(View.GONE); mErrorInfoView.setVisibility(View.GONE);
@@ -202,6 +202,7 @@ public class AccountSyncSettings extends AccountPreferenceBase {
@Override @Override
public void onResume() { public void onResume() {
removePreference("dummy");
mAuthenticatorHelper.listenToAccountUpdates(); mAuthenticatorHelper.listenToAccountUpdates();
updateAuthDescriptions(); updateAuthDescriptions();
onAccountsUpdate(UserHandle.getCallingUserHandle()); onAccountsUpdate(UserHandle.getCallingUserHandle());
@@ -540,7 +541,6 @@ public class AccountSyncSettings extends AccountPreferenceBase {
mProviderIcon.setImageDrawable(getDrawableForType(mAccount.type)); mProviderIcon.setImageDrawable(getDrawableForType(mAccount.type));
mProviderId.setText(getLabelForType(mAccount.type)); mProviderId.setText(getLabelForType(mAccount.type));
} }
addPreferencesFromResource(R.xml.account_sync_settings);
} }
@Override @Override

View File

@@ -23,6 +23,7 @@ import android.preference.SwitchPreference;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import com.android.settings.R; import com.android.settings.R;
@@ -43,17 +44,15 @@ public class SyncStateSwitchPreference extends SwitchPreference {
private boolean mOneTimeSyncMode = false; private boolean mOneTimeSyncMode = false;
public SyncStateSwitchPreference(Context context, AttributeSet attrs) { public SyncStateSwitchPreference(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs, 0, R.style.SyncSwitchPreference);
setWidgetLayoutResource(R.layout.preference_widget_sync_toggle);
mAccount = null; mAccount = null;
mAuthority = null; mAuthority = null;
} }
public SyncStateSwitchPreference(Context context, Account account, String authority) { public SyncStateSwitchPreference(Context context, Account account, String authority) {
super(context, null); super(context, null, 0, R.style.SyncSwitchPreference);
mAccount = account; mAccount = account;
mAuthority = authority; mAuthority = authority;
setWidgetLayoutResource(R.layout.preference_widget_sync_toggle);
} }
@Override @Override