Merge "Update AppCheckBoxPreference to show summary"

This commit is contained in:
TreeHugger Robot
2018-07-27 00:37:43 +00:00
committed by Android (Google) Code Review
2 changed files with 58 additions and 0 deletions

View File

@@ -17,11 +17,16 @@
package com.android.settings.widget;
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.settings.R;
import androidx.preference.CheckBoxPreference;
import androidx.preference.PreferenceViewHolder;
/**
* {@link CheckBoxPreference} that used only to display app
@@ -36,4 +41,20 @@ public class AppCheckBoxPreference extends CheckBoxPreference {
super(context);
setLayoutResource(R.layout.preference_app);
}
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
final TextView appendix = (TextView) holder.findViewById(R.id.appendix);
if (appendix != null) {
appendix.setVisibility(View.GONE);
}
final LinearLayout layout = (LinearLayout) holder.findViewById(R.id.summary_container);
if (layout != null) {
// If summary doesn't exist, make it gone
layout.setVisibility(TextUtils.isEmpty(getSummary()) ? View.GONE : View.VISIBLE);
}
}
}

View File

@@ -19,6 +19,8 @@ package com.android.settings.widget;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -28,18 +30,25 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import androidx.preference.PreferenceViewHolder;
@RunWith(SettingsRobolectricTestRunner.class)
public class AppCheckBoxPreferenceTest {
private static final String SUMMARY = "summary info";
private Context mContext;
private AppCheckBoxPreference mPreference;
private AppCheckBoxPreference mAttrPreference;
private PreferenceViewHolder mPreferenceViewHolder;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
mPreference = new AppCheckBoxPreference(mContext);
mAttrPreference = new AppCheckBoxPreference(mContext, null /* attrs */);
mPreferenceViewHolder = PreferenceViewHolder.createInstanceForTests(
LayoutInflater.from(mContext).inflate(R.layout.preference_app, null));
}
@Test
@@ -47,4 +56,32 @@ public class AppCheckBoxPreferenceTest {
assertThat(mPreference.getLayoutResource()).isEqualTo(R.layout.preference_app);
assertThat(mAttrPreference.getLayoutResource()).isEqualTo(R.layout.preference_app);
}
@Test
public void onBindViewHolder_noSummary_layoutGone() {
mPreference.setSummary("");
mPreference.onBindViewHolder(mPreferenceViewHolder);
assertThat(mPreferenceViewHolder.findViewById(R.id.summary_container).getVisibility())
.isEqualTo(View.GONE);
}
@Test
public void onBindViewHolder_hasSummary_layoutVisible() {
mPreference.setSummary(SUMMARY);
mPreference.onBindViewHolder(mPreferenceViewHolder);
assertThat(mPreferenceViewHolder.findViewById(R.id.summary_container).getVisibility())
.isEqualTo(View.VISIBLE);
}
@Test
public void onBindViewHolder_appendixGone() {
mPreference.onBindViewHolder(mPreferenceViewHolder);
assertThat(mPreferenceViewHolder.findViewById(R.id.appendix).getVisibility())
.isEqualTo(View.GONE);
}
}