Android偏好片段在列表首选项片段中占用图标空间

时间:2017-02-22 10:03:07

标签: android preferencefragment

enter image description here

正如您在图片中看到的那样,左侧需要一些额外的空间。后来我发现这个空间被分配了图标。如何删除此空间?

我试过了preference.setIcon(null);

我也尝试了here给出的解决方案。但没有运气。

我正在使用compile 'com.android.support:preference-v7:25.1.1'

修改

这是我的style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="preferenceTheme">@style/PreferenceThemeOverlayCustom</item>
</style>

<style name="PreferenceThemeOverlayCustom" parent="PreferenceThemeOverlay">
    <item name="preferenceFragmentListStyle">@style/PreferenceFragmentListCustom</item>
</style>

<style name="PreferenceFragmentListCustom" parent="PreferenceFragmentList">

    <item name="android:paddingEnd">0dp</item>
    <item name="android:paddingLeft">0dp</item>
    <item name="android:paddingRight">0dp</item>
    <item name="paddingStart">0dp</item>
</style>

3 个答案:

答案 0 :(得分:2)

构建新的首选项:

new Preference(getPreferenceScreen().getContext());

应该解决问题。

如guillaume-tgl所述,可以找到here的解释。

编辑: 使用新的支持库(28.0.0),您还应该调用:

preference.setIconSpaceReserved(false);

答案 1 :(得分:0)

我认为这是由于您正在使用PreferenceThemeOverlay进行该活动。 您选择的样式采用左侧或右侧的默认填充。

使用此代码

<style name="" parent="PreferenceThemeOverlay">
    <item name="android:paddingLeft">0dp</item>
    <item name="android:paddingRight">0dp</item>
</style>

答案 2 :(得分:0)

只需在您的XML文件中添加app:iconSpaceReserved="false"行,现在开始就不会有空格。