雖然實際上不能將Preference
對象放入首選標題列表中,但您可以使首選標題的行爲與首選項類似。您只需爲標題分配一個ID並在您的PreferenceActivity中覆蓋onHeaderClick()
即可。
下面是如何模擬ListPreference
作爲首選項標題的示例。
pref_headers.xml:
<preference-headers
xmlns:android="http://schemas.android.com/apk/res/android">
<header
android:id="@+id/choose_theme"
android:title="Theme" />
</preference-headers>
MyPreferenceActivity.java:
public class MyPreferenceActivity extends PreferenceActivity {
private CharSequence[] mThemeOptions =
new CharSequence[] {"Red", "Blue", "Awesome"};
private int mSelectedTheme = 0;
@Override
public void onBuildHeaders(List<Header> headers) {
loadHeadersFromResource(R.xml.pref_headers, headers);
for (Header h : headers) {
if (h.id == R.id.choose_theme) {
h.summary = mThemeOptions[mSelectedTheme];
}
}
}
@Override
public void onHeaderClick(Header header, int position) {
if (header.id == R.id.choose_theme) {
OnClickListener l = new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mSelectedTheme = which;
dialog.dismiss();
// Trigger the summary text to be updated.
invalidateHeaders();
}
};
new AlertDialog.Builder(this)
.setSingleChoiceItems(mThemeOptions, mSelectedTheme, l)
.show();
return;
}
super.onHeaderClick(header, position);
}
}