Update BasePreferenceFragment
This commit is contained in:
parent
64113a69b4
commit
0cb90e2e55
@ -2,16 +2,12 @@ package com.topjohnwu.magisk.ui.base
|
|||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.view.children
|
|
||||||
import androidx.core.view.isVisible
|
|
||||||
import androidx.preference.*
|
import androidx.preference.*
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.topjohnwu.magisk.R
|
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
|
|
||||||
abstract class BasePreferenceFragment : PreferenceFragmentCompat(),
|
abstract class BasePreferenceFragment : PreferenceFragmentCompat(),
|
||||||
@ -35,28 +31,26 @@ abstract class BasePreferenceFragment : PreferenceFragmentCompat(),
|
|||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateAdapter(preferenceScreen: PreferenceScreen): RecyclerView.Adapter<*> {
|
private fun setAllPreferencesToAvoidHavingExtraSpace(preference: Preference) {
|
||||||
return object : PreferenceGroupAdapter(preferenceScreen) {
|
preference.isIconSpaceReserved = false
|
||||||
|
if (preference is PreferenceGroup)
|
||||||
|
for (i in 0 until preference.preferenceCount)
|
||||||
|
setAllPreferencesToAvoidHavingExtraSpace(preference.getPreference(i))
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setPreferenceScreen(preferenceScreen: PreferenceScreen?) {
|
||||||
|
if (preferenceScreen != null)
|
||||||
|
setAllPreferencesToAvoidHavingExtraSpace(preferenceScreen)
|
||||||
|
super.setPreferenceScreen(preferenceScreen)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateAdapter(preferenceScreen: PreferenceScreen?): RecyclerView.Adapter<*> =
|
||||||
|
object : PreferenceGroupAdapter(preferenceScreen) {
|
||||||
@SuppressLint("RestrictedApi")
|
@SuppressLint("RestrictedApi")
|
||||||
override fun onBindViewHolder(holder: PreferenceViewHolder, position: Int) {
|
override fun onPreferenceHierarchyChange(preference: Preference?) {
|
||||||
super.onBindViewHolder(holder, position)
|
if (preference != null)
|
||||||
when (val preference = getItem(position)) {
|
setAllPreferencesToAvoidHavingExtraSpace(preference)
|
||||||
is PreferenceCategory -> setZeroPaddingToLayoutChildren(holder.itemView)
|
super.onPreferenceHierarchyChange(preference)
|
||||||
else -> holder.itemView.findViewById<View>(R.id.icon_frame)?.isVisible =
|
|
||||||
preference.icon != null
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun setZeroPaddingToLayoutChildren(view: View) {
|
|
||||||
(view as? ViewGroup)?.children?.forEach {
|
|
||||||
setZeroPaddingToLayoutChildren(it)
|
|
||||||
} ?: return
|
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
|
|
||||||
view.setPaddingRelative(0, view.paddingTop, view.paddingEnd, view.paddingBottom)
|
|
||||||
else
|
|
||||||
view.setPadding(0, view.paddingTop, view.paddingRight, view.paddingBottom)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user