我需要根据应用程序样式(工作表)设置自定义首选项的样式。
我创建了一个自定义首选项,它会并排显示两个设置(名字和姓氏)。一切都很好,我可以使用自定义对话框等编辑它们,但我在设置样式时看起来像其他列表首选项。
下面的图片显示了我要做的事情。
我想让首选(我的自定义)看起来像底部(直接来自settings.xml)。你可以看到填充,文字颜色,大小等都是不同的;这可能是因为“我的”偏好使用线性布局+文本视图而不是标准首选项列表视图项。
我的自定义偏好XML来自此答案Android: Creating custom preference
这是我的应用主题
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
这是我偏好的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="2"
android:id="@android:id/widget_frame"
android:orientation="horizontal">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@android:id/widget_frame"
android:orientation="vertical">
<TextView
android:id="@+id/firstname"
style="@android:style/TextAppearance.DeviceDefault.SearchResult.Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/setting_firstname" />
<TextView
android:id="@+id/firstname_data"
style="@android:style/TextAppearance.DeviceDefault.SearchResult.Subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="moo" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@android:id/widget_frame"
android:orientation="vertical">
<TextView
android:id="@+id/lastname"
style="@android:style/TextAppearance.DeviceDefault.SearchResult.Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/setting_lastname" />
<TextView
android:id="@+id/lastname_data"
style="@android:style/TextAppearance.DeviceDefault.SearchResult.Subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Moo" />
</LinearLayout>
</LinearLayout>
我基本上有两个问题:
我尝试将android:id =“@ android:id / widget_frame”分配给线性布局(如上面的Stackoverflow答案所示)
还在Text视图上尝试了各种style =(style =“@ android:style / TextAppearance.DeviceDefault.SearchResult.Subtitle”),但我不知道这是否正确以及还有哪些其他选项
其他信息
我的全名首选项只是标准代码:
public class FullnamePreference extends DialogPreference {
我的settings.xml包含:
<com.example.Settings.FullnamePreference
android:key="fullname"/>
<Preference
android:key="version"
android:summary="@string/setting_version_summary"
android:title="@string/setting_version" />