テキストブロックを追加したかったのですが、実際のテキストコンテンツをプログラムで設定しました。私の特定のニーズ:設定画面の上部にアプリのバージョン名を表示します。
A.GrandtとKrzysiekによるアプローチに従い、コードで要約を設定して、それを実行しました。
dev_preferences.xml
:
<Preference
android:key="pref_app_version"
android:persistent="false"
android:selectable="false"
android:title="@string/app_name" />
設定フラグメント(extends PreferenceFragment
):
private static final String KEY_APP_VERSION = "pref_app_version";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.dev_preferences);
findPreference(KEY_APP_VERSION).setSummary(BuildConfig.VERSION_NAME);
}
また、エントリで設定することにより、カスタムレイアウト(この回答のように)を使用することになりました。(必須ではありませんが、この方法で、設定の「ヘッダー」の外観を簡単にカスタマイズできます。)android:layout="@layout/dev_preferences_header"
<Preference>
dev_preferences_header.xml
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:padding="@dimen/spacing_small">
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@android:id/title" />
</RelativeLayout>