I started dealing with preferences in a PreferenceFragment
. Here\'s what I have:
New solution for new android API 24 and above (December 25th, 2017).
I've found after try many ways on stackoverflow, but not work, or it just work but not work in nestest PreferenceScreen
.
Frist, you need to find listview from current displaying fragment, and remove the divider:
private fun removeDividerInCurrentFragment() {
this@YourPreferenceActivity.fragmentManager.findFragmentById(android.R.id.content)?.let {
it.view?.findViewById(android.R.id.list)?.let {
it.divider = null
it.dividerHeight = 0
}
}
}
Second, to remove the divider when fragment commited, call method above (removeDividerInCurrentFragment
) to remove listview's divider.
To sure if you have nestest PreferenceScreen
. Register listener when fragment changed in your PreferenceActivity
by implement FragmentManager.OnBackStackChangedListener
protocol:
class YourPreferenceActivity : PreferenceActivity(), FragmentManager.OnBackStackChangedListener {
override fun onBackStackChanged() {
this@YourPreferenceActivity.removeDividerInCurrentFragment()
}
}
Finally, register backstack changes listener by call fragmentManager.addOnBackStackChangedListener(this@ YourPreferenceActivity)
in onCreate
. And remove backstack changes listener by call fragmentManager.removeOnBackStackChangedListener
in onDestroyed
method.
Good luck!