summaryrefslogtreecommitdiffstats
path: root/core/java/android/preference
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2014-09-24 18:48:11 -0700
committerFabrice Di Meglio <fdimeglio@google.com>2014-09-26 13:38:12 -0700
commitb22be6fcf2689a7de3795f406678caf73180a990 (patch)
tree0db1d8f2313165a955ed321c65b951b0642cbb19 /core/java/android/preference
parent75b8966cad24354272759a1579376f7e64e40050 (diff)
downloadframeworks_base-b22be6fcf2689a7de3795f406678caf73180a990.zip
frameworks_base-b22be6fcf2689a7de3795f406678caf73180a990.tar.gz
frameworks_base-b22be6fcf2689a7de3795f406678caf73180a990.tar.bz2
Fix bug #17521147 Settings activity looks terrible on Volantis
- update layouts for PreferenceActivity and its headers in two panes mode (per UX request) - add theming where it was missing Change-Id: I0c478c1a66b6de7e122b7ee73da24f3dd5a7bc28
Diffstat (limited to 'core/java/android/preference')
-rw-r--r--core/java/android/preference/PreferenceActivity.java48
1 files changed, 42 insertions, 6 deletions
diff --git a/core/java/android/preference/PreferenceActivity.java b/core/java/android/preference/PreferenceActivity.java
index 23b1e2c..04cd7d5 100644
--- a/core/java/android/preference/PreferenceActivity.java
+++ b/core/java/android/preference/PreferenceActivity.java
@@ -212,6 +212,9 @@ public abstract class PreferenceActivity extends ListActivity implements
private Button mNextButton;
+ private int mPreferenceHeaderItemResId = 0;
+ private boolean mPreferenceHeaderRemoveEmptyIcon = false;
+
/**
* The starting request code given out to preference framework.
*/
@@ -258,10 +261,15 @@ public abstract class PreferenceActivity extends ListActivity implements
}
private LayoutInflater mInflater;
+ private int mLayoutResId;
+ private boolean mRemoveIconIfEmpty;
- public HeaderAdapter(Context context, List<Header> objects) {
+ public HeaderAdapter(Context context, List<Header> objects, int layoutResId,
+ boolean removeIconBehavior) {
super(context, 0, objects);
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ mLayoutResId = layoutResId;
+ mRemoveIconIfEmpty = removeIconBehavior;
}
@Override
@@ -270,8 +278,7 @@ public abstract class PreferenceActivity extends ListActivity implements
View view;
if (convertView == null) {
- view = mInflater.inflate(com.android.internal.R.layout.preference_header_item,
- parent, false);
+ view = mInflater.inflate(mLayoutResId, parent, false);
holder = new HeaderViewHolder();
holder.icon = (ImageView) view.findViewById(com.android.internal.R.id.icon);
holder.title = (TextView) view.findViewById(com.android.internal.R.id.title);
@@ -284,7 +291,16 @@ public abstract class PreferenceActivity extends ListActivity implements
// All view fields must be updated every time, because the view may be recycled
Header header = getItem(position);
- holder.icon.setImageResource(header.iconRes);
+ if (mRemoveIconIfEmpty) {
+ if (header.iconRes == 0) {
+ holder.icon.setVisibility(View.GONE);
+ } else {
+ holder.icon.setVisibility(View.VISIBLE);
+ holder.icon.setImageResource(header.iconRes);
+ }
+ } else {
+ holder.icon.setImageResource(header.iconRes);
+ }
holder.title.setText(header.getTitle(getContext().getResources()));
CharSequence summary = header.getSummary(getContext().getResources());
if (!TextUtils.isEmpty(summary)) {
@@ -512,7 +528,26 @@ public abstract class PreferenceActivity extends ListActivity implements
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(com.android.internal.R.layout.preference_list_content);
+ // Theming for the PreferenceActivity layout and for the Preference Header(s) layout
+ TypedArray sa = obtainStyledAttributes(null,
+ com.android.internal.R.styleable.PreferenceActivity,
+ com.android.internal.R.attr.preferenceActivityStyle,
+ 0);
+
+ final int layoutResId = sa.getResourceId(
+ com.android.internal.R.styleable.PreferenceActivity_layout,
+ com.android.internal.R.layout.preference_list_content);
+
+ mPreferenceHeaderItemResId = sa.getResourceId(
+ com.android.internal.R.styleable.PreferenceActivity_headerLayout,
+ com.android.internal.R.layout.preference_header_item);
+ mPreferenceHeaderRemoveEmptyIcon = sa.getBoolean(
+ com.android.internal.R.styleable.PreferenceActivity_headerRemoveIconIfEmpty,
+ false);
+
+ sa.recycle();
+
+ setContentView(layoutResId);
mListFooter = (FrameLayout)findViewById(com.android.internal.R.id.list_footer);
mPrefsContainer = (ViewGroup) findViewById(com.android.internal.R.id.prefs_frame);
@@ -582,7 +617,8 @@ public abstract class PreferenceActivity extends ListActivity implements
showBreadCrumbs(initialTitleStr, initialShortTitleStr);
}
} else if (mHeaders.size() > 0) {
- setListAdapter(new HeaderAdapter(this, mHeaders));
+ setListAdapter(new HeaderAdapter(this, mHeaders, mPreferenceHeaderItemResId,
+ mPreferenceHeaderRemoveEmptyIcon));
if (!mSinglePane) {
// Multi-pane.
getListView().setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);