androix.preference.ListPreference 中的自定义行适配器
Custom Row Adapter in androix.preference.ListPreference
Android 中的旧版 ListPreference 附带:
protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder builder)
可用于修改显示对话框中的行...
参见 custom row in a listPreference?
此方法在 androix.preference 库中不再可用
想知道在使用 androix.preference 支持库时如何在显示的对话框中实现行自定义?
应该覆盖 PreferenceFragmentCompat#onDisplayPreferenceDialog(preference: Preference)
以显示自定义首选项对话框:
override fun onDisplayPreferenceDialog(preference: Preference) {
if (preference.key == MY_CUSTOM_DIALOG_KEY) {
if (parentFragmentManager.findFragmentByTag(DIALOG_FRAGMENT_TAG) != null) {
// already displayed to user
return
}
MyCustomPreferenceDialogFragment.newInstance(preference.key).let {
it.setTargetFragment(this, 0)
it.show(parentFragmentManager, DIALOG_FRAGMENT_TAG)
}
} else {
super.onDisplayPreferenceDialog(preference)
}
}
要实现您的自定义首选项对话框片段,您可以查看支持库中的实现:
- PreferenceDialogFragmentCompat
Android 中的旧版 ListPreference 附带:
protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder builder)
可用于修改显示对话框中的行... 参见 custom row in a listPreference?
此方法在 androix.preference 库中不再可用 想知道在使用 androix.preference 支持库时如何在显示的对话框中实现行自定义?
应该覆盖 PreferenceFragmentCompat#onDisplayPreferenceDialog(preference: Preference)
以显示自定义首选项对话框:
override fun onDisplayPreferenceDialog(preference: Preference) {
if (preference.key == MY_CUSTOM_DIALOG_KEY) {
if (parentFragmentManager.findFragmentByTag(DIALOG_FRAGMENT_TAG) != null) {
// already displayed to user
return
}
MyCustomPreferenceDialogFragment.newInstance(preference.key).let {
it.setTargetFragment(this, 0)
it.show(parentFragmentManager, DIALOG_FRAGMENT_TAG)
}
} else {
super.onDisplayPreferenceDialog(preference)
}
}
要实现您的自定义首选项对话框片段,您可以查看支持库中的实现:
- PreferenceDialogFragmentCompat