我想添加一个文本块,但是以编程方式设置实际的文本内容。我的具体需求:在首选项屏幕顶部显示应用程序版本名称。
我按照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>