Android:匹配首选项列表视图项

时间:2016-03-13 21:28:22

标签: android android-layout listview android-preferences

我需要根据应用程序样式(工作表)设置自定义首选项的样式。

我创建了一个自定义首选项,它会并排显示两个设置(名字和姓氏)。一切都很好,我可以使用自定义对话框等编辑它们,但我在设置样式时看起来像其他列表首选项。

下面的图片显示了我要做的事情。

View list

我想让首选(我的自定义)看起来像底部(直接来自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>

我基本上有两个问题:

  1. 我在哪里可以找到创建首选项列表项的XML - 它是标准列表视图项还是自己的自定义XML?
  2. 如何让我的偏好看起来像标准的呢?
  3. 我尝试将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" />
    

0 个答案:

没有答案