summaryrefslogtreecommitdiff
path: root/core/java/android/preference/PreferenceScreen.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/preference/PreferenceScreen.java')
-rw-r--r--core/java/android/preference/PreferenceScreen.java43
1 files changed, 39 insertions, 4 deletions
diff --git a/core/java/android/preference/PreferenceScreen.java b/core/java/android/preference/PreferenceScreen.java
index b1317e656e3e..2305b0564e49 100644
--- a/core/java/android/preference/PreferenceScreen.java
+++ b/core/java/android/preference/PreferenceScreen.java
@@ -19,6 +19,8 @@ package android.preference;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -31,6 +33,7 @@ import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
+import android.widget.TextView;
/**
* Represents a top-level {@link Preference} that
@@ -91,13 +94,33 @@ public final class PreferenceScreen extends PreferenceGroup implements AdapterVi
private Dialog mDialog;
private ListView mListView;
-
+
+ private int mLayoutResId = com.android.internal.R.layout.preference_list_fragment;
+ private Drawable mDividerDrawable;
+ private boolean mDividerSpecified;
+
/**
* Do NOT use this constructor, use {@link PreferenceManager#createPreferenceScreen(Context)}.
* @hide-
*/
public PreferenceScreen(Context context, AttributeSet attrs) {
super(context, attrs, com.android.internal.R.attr.preferenceScreenStyle);
+
+ TypedArray a = context.obtainStyledAttributes(null,
+ com.android.internal.R.styleable.PreferenceScreen,
+ com.android.internal.R.attr.preferenceScreenStyle,
+ 0);
+
+ mLayoutResId = a.getResourceId(
+ com.android.internal.R.styleable.PreferenceScreen_screenLayout,
+ mLayoutResId);
+ if (a.hasValueOrEmpty(com.android.internal.R.styleable.PreferenceScreen_divider)) {
+ mDividerDrawable =
+ a.getDrawable(com.android.internal.R.styleable.PreferenceScreen_divider);
+ mDividerSpecified = true;
+ }
+
+ a.recycle();
}
/**
@@ -163,18 +186,30 @@ public final class PreferenceScreen extends PreferenceGroup implements AdapterVi
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View childPrefScreen = inflater.inflate(
- com.android.internal.R.layout.preference_list_fragment, null);
+ View childPrefScreen = inflater.inflate(mLayoutResId, null);
+ View titleView = childPrefScreen.findViewById(android.R.id.title);
mListView = (ListView) childPrefScreen.findViewById(android.R.id.list);
+ if (mDividerSpecified) {
+ mListView.setDivider(mDividerDrawable);
+ }
+
bind(mListView);
// Set the title bar if title is available, else no title bar
final CharSequence title = getTitle();
Dialog dialog = mDialog = new Dialog(context, context.getThemeResId());
if (TextUtils.isEmpty(title)) {
+ if (titleView != null) {
+ titleView.setVisibility(View.GONE);
+ }
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
} else {
- dialog.setTitle(title);
+ if (titleView instanceof TextView) {
+ ((TextView) titleView).setText(title);
+ titleView.setVisibility(View.VISIBLE);
+ } else {
+ dialog.setTitle(title);
+ }
}
dialog.setContentView(childPrefScreen);
dialog.setOnDismissListener(this);