我正在尝试使用材质主题设置我的偏好,并且几乎就在那里。
我导入了以下内容:
compile 'com.android.support:preference-v7:25.1.0'
compile 'com.android.support:preference-v14:25.1.0'
然后在我的主应用主题中设置首选项主题:
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
我的偏好屏幕看起来很不错。我唯一的问题是类别没有空间或视觉分离,使得所有偏好看起来非常混乱。
材质设计文档显示的分隔符看起来像顶部和底部阴影(设备类别上方的IE):
几个问题:
android是否提供此功能?如果有,那么有更新的appcompat主题吗?或者其他我做错了什么?
如果android尚未在材质偏好主题中提供此分隔符,是否有人创建了它?我看到了这一点,他创建了一个带有自定义布局的新类别Divider between category in PreferenceFragment。但我不完全确定如何创造所需的效果。
答案 0 :(得分:5)
另一个答案很好,在这里稍微编辑一下,如果你根本不理解drawable。
XML /的preferences.xml
<PreferenceCategory
android:layout="@layout/divider"
android:title="Category2">
<Preference
android:title="Test1"
android:summary="Summary1"/>
</PreferenceCategory>
布局/ divider.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="10dp"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@drawable/shadow"/>
</LinearLayout>
抽拉/ shadow.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#1F000000"
android:endColor="@android:color/transparent"
android:angle="90" />
</shape>
答案 1 :(得分:2)
如果你仔细观察截图,你会注意到你想要的分隔效果在顶部和底部有一个阴影,但不是在中间。因此,对于分隔符,以下XML应该可以工作: -
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="10dp"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@drawable/shadow_bottom"/>
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@drawable/shadow_top"/>
</LinearLayout>
现在,对于PreferenceScreen
,要显示分隔符,您所要做的就是将PreferenceCategory
空android:layout
包含在上面的XML中。像android:layout="@layout/divider_layout"
这样的东西。通过“空”偏好类别,我的意思是偏好类别不应该有Preference
个孩子。
所以,你的PreferenceScreen
应该是这样的: -
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="Category_First">
<Preference
android:title="prefA"/>
</PreferenceCategory>
<PreferenceCategory
android:layout="@layout/divider_layout">
</PreferenceCategory>
<PreferenceCategory
android:title="Category_Second">
<Preference
android:title="prefB"/>
</PreferenceCategory>
</PreferenceScreen>