Add SettingsSpinnerPreference#setClickable
This change add the API for Storage Settings to set
the spinner not clickablewhen there is only 1 volume.
Bug: 187801712
Test: manual
Click the spinner when there is only default volume.
Click the spinner when there is USB drive connected.
Change-Id: I1e6d46c9772b641678085d41d4905022e893acc4
This commit is contained in:
@@ -36,6 +36,7 @@ public class SettingsSpinnerPreference extends Preference {
|
||||
private SettingsSpinnerAdapter mAdapter;
|
||||
private AdapterView.OnItemSelectedListener mListener;
|
||||
private int mPosition; //Default 0 for internal shard storage.
|
||||
private boolean mIsClickable = true;
|
||||
|
||||
/**
|
||||
* Perform inflation from XML and apply a class-specific base style.
|
||||
@@ -50,6 +51,7 @@ public class SettingsSpinnerPreference extends Preference {
|
||||
public SettingsSpinnerPreference(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
setLayoutResource(R.layout.settings_spinner_preference);
|
||||
setSelectable(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -62,6 +64,7 @@ public class SettingsSpinnerPreference extends Preference {
|
||||
public SettingsSpinnerPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
setLayoutResource(R.layout.settings_spinner_preference);
|
||||
setSelectable(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -98,10 +101,21 @@ public class SettingsSpinnerPreference extends Preference {
|
||||
notifyChanged();
|
||||
}
|
||||
|
||||
/** Set clickable of the spinner. */
|
||||
public void setClickable(boolean isClickable) {
|
||||
if (mIsClickable == isClickable) {
|
||||
return;
|
||||
}
|
||||
mIsClickable = isClickable;
|
||||
notifyChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||
super.onBindViewHolder(holder);
|
||||
final SettingsSpinner spinner = (SettingsSpinner) holder.findViewById(R.id.spinner);
|
||||
spinner.setEnabled(mIsClickable);
|
||||
spinner.setClickable(mIsClickable);
|
||||
spinner.setAdapter(mAdapter);
|
||||
spinner.setSelection(mPosition);
|
||||
spinner.setOnItemSelectedListener(mOnSelectedListener);
|
||||
|
||||
@@ -89,4 +89,24 @@ public class SettingsSpinnerPreferenceTest {
|
||||
assertThat(mSpinnerPreference.getSelectedItem())
|
||||
.isEqualTo(mSpinner.getAdapter().getItem(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_setClickableTrue_isClickableTrue() {
|
||||
mSpinnerPreference.setClickable(true);
|
||||
|
||||
mSpinnerPreference.onBindViewHolder(mViewHolder);
|
||||
|
||||
assertThat(mSpinner.isClickable()).isTrue();
|
||||
assertThat(mSpinner.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onBindViewHolder_setClickableFalse_isClickableFalse() {
|
||||
mSpinnerPreference.setClickable(false);
|
||||
|
||||
mSpinnerPreference.onBindViewHolder(mViewHolder);
|
||||
|
||||
assertThat(mSpinner.isClickable()).isFalse();
|
||||
assertThat(mSpinner.isEnabled()).isFalse();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user