Merge "Extends the touch area for the switch in Master Switch preference."
This commit is contained in:
committed by
Android (Google) Code Review
commit
bb5509f84f
@@ -21,7 +21,6 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:minHeight="?android:attr/listPreferredItemHeight"
|
android:minHeight="?android:attr/listPreferredItemHeight"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
|
||||||
android:background="@android:color/transparent"
|
android:background="@android:color/transparent"
|
||||||
android:clipToPadding="false">
|
android:clipToPadding="false">
|
||||||
|
|
||||||
@@ -85,6 +84,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="end|center_vertical"
|
android:gravity="end|center_vertical"
|
||||||
android:orientation="vertical"/>
|
android:orientation="vertical"
|
||||||
|
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@@ -36,6 +36,7 @@
|
|||||||
<Switch android:id="@+id/switchWidget"
|
<Switch android:id="@+id/switchWidget"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:gravity="center_vertical" />
|
android:gravity="center_vertical"
|
||||||
|
android:clickable="false"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@@ -20,7 +20,8 @@ import android.content.Context;
|
|||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceViewHolder;
|
import android.support.v7.preference.PreferenceViewHolder;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.widget.CompoundButton;
|
import android.view.View;
|
||||||
|
import android.view.View.OnClickListener;
|
||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
@@ -61,21 +62,24 @@ public class MasterSwitchPreference extends Preference {
|
|||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||||
super.onBindViewHolder(holder);
|
super.onBindViewHolder(holder);
|
||||||
mSwitch = (Switch) holder.itemView.findViewById(R.id.switchWidget);
|
final View widgetView = holder.itemView.findViewById(android.R.id.widget_frame);
|
||||||
if (mSwitch != null) {
|
if (widgetView != null) {
|
||||||
mSwitch.setChecked(mChecked);
|
widgetView.setOnClickListener(new OnClickListener() {
|
||||||
mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onCheckedChanged(CompoundButton button, boolean isChecked) {
|
public void onClick(View v) {
|
||||||
if (!callChangeListener(isChecked)) {
|
setChecked(!mChecked);
|
||||||
button.setChecked(!isChecked);
|
if (!callChangeListener(mChecked)) {
|
||||||
|
setChecked(!mChecked);
|
||||||
} else {
|
} else {
|
||||||
persistBoolean(isChecked);
|
persistBoolean(mChecked);
|
||||||
mChecked = isChecked;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
mSwitch = (Switch) holder.itemView.findViewById(R.id.switchWidget);
|
||||||
|
if (mSwitch != null) {
|
||||||
|
mSwitch.setChecked(mChecked);
|
||||||
|
}
|
||||||
if (mMultiLine) {
|
if (mMultiLine) {
|
||||||
TextView textView = (TextView)holder.findViewById(android.R.id.title);
|
TextView textView = (TextView)holder.findViewById(android.R.id.title);
|
||||||
if (textView != null) {
|
if (textView != null) {
|
||||||
|
@@ -21,7 +21,10 @@ import android.support.v7.preference.Preference;
|
|||||||
import android.support.v7.preference.PreferenceViewHolder;
|
import android.support.v7.preference.PreferenceViewHolder;
|
||||||
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
|
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.View.OnClickListener;
|
||||||
import android.widget.CompoundButton.OnCheckedChangeListener;
|
import android.widget.CompoundButton.OnCheckedChangeListener;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -92,31 +95,39 @@ public class MasterSwitchPreferenceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toggleButtonOn_shouldNotifyChecked() {
|
public void clickWidgetView_shouldToggleButton() {
|
||||||
final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
|
final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
|
||||||
|
final LayoutInflater inflater = LayoutInflater.from(mContext);
|
||||||
final PreferenceViewHolder holder = new PreferenceViewHolder(
|
final PreferenceViewHolder holder = new PreferenceViewHolder(
|
||||||
LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
|
inflater.inflate(R.layout.preference_master_switch, null));
|
||||||
|
final LinearLayout widgetView = holder.itemView.findViewById(android.R.id.widget_frame);
|
||||||
|
inflater.inflate(R.layout.preference_widget_master_switch, widgetView, true);
|
||||||
final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
|
final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
|
||||||
final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
|
|
||||||
preference.setOnPreferenceChangeListener(listener);
|
|
||||||
preference.onBindViewHolder(holder);
|
preference.onBindViewHolder(holder);
|
||||||
|
|
||||||
toggle.setChecked(true);
|
widgetView.performClick();
|
||||||
verify(listener).onPreferenceChange(preference, true);
|
assertThat(toggle.isChecked()).isTrue();
|
||||||
|
|
||||||
|
widgetView.performClick();
|
||||||
|
assertThat(toggle.isChecked()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void toggleButtonOff_shouldNotifyUnchecked() {
|
public void clickWidgetView_shouldNotifyPreferenceChanged() {
|
||||||
final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
|
final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
|
||||||
final PreferenceViewHolder holder = new PreferenceViewHolder(
|
final PreferenceViewHolder holder = new PreferenceViewHolder(
|
||||||
LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
|
LayoutInflater.from(mContext).inflate(R.layout.preference_master_switch, null));
|
||||||
final Switch toggle = (Switch) holder.itemView.findViewById(R.id.switchWidget);
|
final View widgetView = holder.itemView.findViewById(android.R.id.widget_frame);
|
||||||
final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
|
final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
|
||||||
preference.setChecked(true);
|
|
||||||
preference.setOnPreferenceChangeListener(listener);
|
preference.setOnPreferenceChangeListener(listener);
|
||||||
preference.onBindViewHolder(holder);
|
preference.onBindViewHolder(holder);
|
||||||
|
|
||||||
toggle.setChecked(false);
|
preference.setChecked(false);
|
||||||
|
widgetView.performClick();
|
||||||
|
verify(listener).onPreferenceChange(preference, true);
|
||||||
|
|
||||||
|
preference.setChecked(true);
|
||||||
|
widgetView.performClick();
|
||||||
verify(listener).onPreferenceChange(preference, false);
|
verify(listener).onPreferenceChange(preference, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,7 +145,7 @@ public class MasterSwitchPreferenceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setDisabledByAdmin_noEnforcedAdmin_shouldEnaableButton() {
|
public void setDisabledByAdmin_noEnforcedAdmin_shouldEnableButton() {
|
||||||
final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
|
final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
|
||||||
final PreferenceViewHolder holder = new PreferenceViewHolder(
|
final PreferenceViewHolder holder = new PreferenceViewHolder(
|
||||||
LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
|
LayoutInflater.from(mContext).inflate(R.layout.preference_widget_master_switch, null));
|
||||||
|
Reference in New Issue
Block a user