如何删除首选项标题和以下首选项之间的填充?

时间:2018-03-12 21:23:38

标签: xamarin.android android-preferences preferenceactivity androiddesignsupport preferencescreen

我想删除偏好设置屏幕中的紫色差距: preference

所以它应该是这样的: Google Play Store example

我使用Xamarin Android和c#来开发我的应用。 首选项屏幕是来自Android.Support.V7.Preferences库的PreferenceFragmentCompat。材质样式在我的自定义主题中设置:

<style name="Theme.DarkTheme" parent="Theme.AppCompat.NoActionBar">
   <item name="colorPrimary">#673AB7</item>
   <item name="colorPrimaryDark">#512DA8</item>
   <item name="colorAccent">#039be5</item><!--#FF4081-->
   <item name="colorControlHighlight">#242424</item>
   <item name="android:listDivider">@style/android:drawable/divider_horizontal_dim_dark</item> 
   <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> 

以下是我的xml资源文件的样子,我在PreferenceFragmentCompats OnCreatePreferences()函数中通过AddPreferencesFromResource(Resources.Id.preference_screen)调用它:

<android.support.v7.preference.PreferenceScreen 
   xmlns:android="http://schemas.android.com/apk/res/android">
   <android.support.v7.preference.PreferenceCategory
    android:title="App">
        <Preference
            android:key="advsettings_preference"
            android:title="Erweiterte Einstellungen" />
        <Preference
            android:key="license_preference"
            android:title="Rechtliche Hinweise" />
   </android.support.v7.preference.PreferenceCategory>
</android.support.v7.preference.PreferenceScreen>

我已经尝试通过向PreferenceScreen添加填充属性来自行修复它,但没有任何改变。

安装了Xamarin Android的所有最新NuGet软件包(v27.0.2)。 提前谢谢。

2 个答案:

答案 0 :(得分:3)

请尝试设置这样的风格;

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
    <!-- Customize your theme here. -->
    <item name="preferenceTheme">@style/MyPreferenceStyle</item>
</style>

<style name="MyPreferenceStyle" parent="@style/PreferenceThemeOverlay.v14.Material">
    <item name="preferenceCategoryStyle">@style/MyPreferenceCategoryStyle</item>
    <item name="android:paddingLeft">10dp</item>
    <item name="android:paddingRight">10dp</item>
</style>

<style name="MyPreferenceCategoryStyle" parent="@style/Preference.Category.Material">
    <item name="android:layout">@layout/preference_category</item>
</style>

preference_category.axml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+android:id/title"
    android:textColor="?android:attr/colorAccent"
    android:textSize="14dp"
    android:fontFamily="sans-serif-medium"
    android:paddingStart="16dp"
    android:singleLine="true"
    android:paddingTop="16dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

和AppSettings:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.preference.PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">
    <android.support.v7.preference.PreferenceCategory
        android:title="App">
        <Preference
            android:key="advsettings_preference"
            android:title="Erweiterte Einstellungen"
            android:summary="BenachRichtigung"/>
    </android.support.v7.preference.PreferenceCategory>
</android.support.v7.preference.PreferenceScreen>

它将解决差距问题。并且看起来类似于Google Play商店的屏幕截图。嗯,布局检查器不完全相同,但类似:

enter image description here

答案 1 :(得分:0)

在启用的开发人员选项中使用“使用布局边界”查看布局时的紫色区域代表边距,而不是据我所知的填充。

我建议您尝试为PreferenceCategoryPreference制作自定义布局,并使用android:layout属性将其设置在上述axml中:

android:layout="@layout/layout_name"

(可能需要同时使用android:layoutandroid:widgetLayout属性)