Commit 0cb90e2e authored by topjohnwu's avatar topjohnwu

Update BasePreferenceFragment

parent 64113a69
...@@ -2,16 +2,12 @@ package com.topjohnwu.magisk.ui.base ...@@ -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(), ...@@ -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
@SuppressLint("RestrictedApi") if (preference is PreferenceGroup)
override fun onBindViewHolder(holder: PreferenceViewHolder, position: Int) { for (i in 0 until preference.preferenceCount)
super.onBindViewHolder(holder, position) setAllPreferencesToAvoidHavingExtraSpace(preference.getPreference(i))
when (val preference = getItem(position)) {
is PreferenceCategory -> setZeroPaddingToLayoutChildren(holder.itemView)
else -> holder.itemView.findViewById<View>(R.id.icon_frame)?.isVisible =
preference.icon != null
}
}
}
} }
private fun setZeroPaddingToLayoutChildren(view: View) { override fun setPreferenceScreen(preferenceScreen: PreferenceScreen?) {
(view as? ViewGroup)?.children?.forEach { if (preferenceScreen != null)
setZeroPaddingToLayoutChildren(it) setAllPreferencesToAvoidHavingExtraSpace(preferenceScreen)
} ?: return super.setPreferenceScreen(preferenceScreen)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) override fun onCreateAdapter(preferenceScreen: PreferenceScreen?): RecyclerView.Adapter<*> =
view.setPaddingRelative(0, view.paddingTop, view.paddingEnd, view.paddingBottom) object : PreferenceGroupAdapter(preferenceScreen) {
else @SuppressLint("RestrictedApi")
view.setPadding(0, view.paddingTop, view.paddingRight, view.paddingBottom) override fun onPreferenceHierarchyChange(preference: Preference?) {
if (preference != null)
setAllPreferencesToAvoidHavingExtraSpace(preference)
super.onPreferenceHierarchyChange(preference)
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment