模仿偏好屏幕并显示键值属性
Mimic preference screen and displaying key-value attributes
如何在不做太多工作的情况下模仿首选项屏幕或 android 屏幕的设计?
我必须为一个对象显示 ~12 个属性,但无法理解如何以好的方式显示它们。
- 不是每个属性都有一个明显的图标 -> 我们需要标签吗?
- 在其他带有图标的文本视图下方显示文本视图看起来很糟糕,除非您想手动添加边距。 (缩进)
- PreferenceFragment有一种"Title"可以作为Label和Value,这样就更完美了,因为我有一些交互元素(item picker)。
- 但是使用没有 SharedPreferences 的 preferencefragment 而不是显示任意对象显然是一个(坏的?)hack。
我找了很多都没有得出结论。有没有明显的方法我错过了?
您实际上可以毫不费力地创建设置 Activity(具有全部功能)。
转到File > New > Activity > Settings Activity
。
它将创建完整的功能 - 您只需要在
中指定开关和列表
res > xml > prefs_.xml
您通过屏幕设置的值将保存在指定键下的 SharedPreferences 中。
要拦截通过 UI 配置到 SharedPreferences 的值,您可以将其添加到设置 Activity:
class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.pref_general, rootKey)
findPreference<ListPreference>("system_theme")?.setOnPreferenceClickListener {
val value = (it as? ListPreference)?.value
//send value to server
return@setOnPreferenceClickListener true
}
}
}
如何在不做太多工作的情况下模仿首选项屏幕或 android 屏幕的设计? 我必须为一个对象显示 ~12 个属性,但无法理解如何以好的方式显示它们。
- 不是每个属性都有一个明显的图标 -> 我们需要标签吗?
- 在其他带有图标的文本视图下方显示文本视图看起来很糟糕,除非您想手动添加边距。 (缩进)
- PreferenceFragment有一种"Title"可以作为Label和Value,这样就更完美了,因为我有一些交互元素(item picker)。
- 但是使用没有 SharedPreferences 的 preferencefragment 而不是显示任意对象显然是一个(坏的?)hack。
我找了很多都没有得出结论。有没有明显的方法我错过了?
您实际上可以毫不费力地创建设置 Activity(具有全部功能)。
转到File > New > Activity > Settings Activity
。
它将创建完整的功能 - 您只需要在
中指定开关和列表res > xml > prefs_.xml
您通过屏幕设置的值将保存在指定键下的 SharedPreferences 中。
要拦截通过 UI 配置到 SharedPreferences 的值,您可以将其添加到设置 Activity:
class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.pref_general, rootKey)
findPreference<ListPreference>("system_theme")?.setOnPreferenceClickListener {
val value = (it as? ListPreference)?.value
//send value to server
return@setOnPreferenceClickListener true
}
}
}