首页 > 解决方案 > Android PreferenceFragmentCompat 标题空格

问题描述

我不知道为什么使用这个 Fragment 会出现问题,似乎 isIconSpaceReserved = false 对 not preferenceCagory 有用

class TFragment : PreferenceFragmentCompat() {


override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
    val context = preferenceManager.context

    val screen = preferenceManager.createPreferenceScreen(context)

    val category1 = PreferenceCategory(context)
    category1.title = "button"
    category1.summary = "what is the problem"
    category1.key = "bbb"

    val swithButton = SwitchPreferenceCompat(context)
    swithButton.title = "button"
    swithButton.summary = "summary"
    swithButton.key = "sss"
    swithButton.isIconSpaceReserved = false


    val swithButton2 = EditTextPreference(context)
    swithButton2.title = "edit"

    val swithButton3 = SeekBarPreference(context)
    swithButton3.title = "seekbar"
    swithButton3.value = 1


    screen.addPreference(category1)
    category1.addPreference(swithButton)

    val category2 = PreferenceCategory(context)
    category2.title = "category2"

    screen.addPreference(category2)

    category2.addPreference(swithButton2)
    category2.addPreference(swithButton3)
    preferenceScreen = screen
}

风格很一般,我尝试了很多方法,但都没有用。

在此处输入图像描述

标签: android

解决方案


现在,我尝试了 'androidx.preference:preference:1.1.0-alpha01' ,很幸运,它修复了 PreferenceCategory 不支持 isIconSpaceReserved 的错误。

override fun setPreferenceScreen(preferenceScreen: PreferenceScreen?) {
    super.setPreferenceScreen(preferenceScreen)
    if (preferenceScreen != null) {
        val count = preferenceScreen.preferenceCount
        for (i in 0 until count) {
            if (preferenceScreen.getPreference(i) is PreferenceCategory) {
                val category = preferenceScreen.getPreference(i) as PreferenceCategory
                val childCount = category.preferenceCount
                for (j in 0 until childCount) {
                    category.getPreference(j).isIconSpaceReserved = false
                }
            }
            preferenceScreen.getPreference(i).isIconSpaceReserved = false
        }
    }
}

推荐阅读