am 1acd81fb: am 33512668: am 5861b628: am a2a5c97f: am 8420a924: Merge "Fix bug #17521147 Settings activity looks terrible on Volantis" into lmp-dev
* commit '1acd81fbcc980ef17711a3472b7f0d0e3d5e34c4': Fix bug #17521147 Settings activity looks terrible on Volantis
This commit is contained in:
@@ -58,6 +58,8 @@ public class FragmentBreadCrumbs extends ViewGroup
|
||||
private OnBreadCrumbClickListener mOnBreadCrumbClickListener;
|
||||
|
||||
private int mGravity;
|
||||
private int mLayoutResId;
|
||||
private int mTextColor;
|
||||
|
||||
private static final int DEFAULT_GRAVITY = Gravity.START | Gravity.CENTER_VERTICAL;
|
||||
|
||||
@@ -103,6 +105,12 @@ public class FragmentBreadCrumbs extends ViewGroup
|
||||
|
||||
mGravity = a.getInt(com.android.internal.R.styleable.FragmentBreadCrumbs_gravity,
|
||||
DEFAULT_GRAVITY);
|
||||
mLayoutResId = a.getResourceId(
|
||||
com.android.internal.R.styleable.FragmentBreadCrumbs_itemLayout,
|
||||
com.android.internal.R.layout.fragment_bread_crumb_item);
|
||||
mTextColor = a.getColor(
|
||||
com.android.internal.R.styleable.FragmentBreadCrumbs_itemColor,
|
||||
0);
|
||||
|
||||
a.recycle();
|
||||
}
|
||||
@@ -311,12 +319,11 @@ public class FragmentBreadCrumbs extends ViewGroup
|
||||
}
|
||||
}
|
||||
if (i >= numViews) {
|
||||
final View item = mInflater.inflate(
|
||||
com.android.internal.R.layout.fragment_bread_crumb_item,
|
||||
this, false);
|
||||
final View item = mInflater.inflate(mLayoutResId, this, false);
|
||||
final TextView text = (TextView) item.findViewById(com.android.internal.R.id.title);
|
||||
text.setText(bse.getBreadCrumbTitle());
|
||||
text.setTag(bse);
|
||||
text.setTextColor(mTextColor);
|
||||
if (i == 0) {
|
||||
item.findViewById(com.android.internal.R.id.left_icon).setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user