Android 模拟首选项屏幕并显示键值属性
我如何模仿android的偏好屏幕或“编辑联系人”屏幕的设计,而不做太多工作? 我必须为一个对象显示12个属性,但我无法理解如何以良好的方式显示它们Android 模拟首选项屏幕并显示键值属性,android,android-layout,layout,preferenceactivity,Android,Android Layout,Layout,Preferenceactivity,我如何模仿android的偏好屏幕或“编辑联系人”屏幕的设计,而不做太多工作? 我必须为一个对象显示12个属性,但我无法理解如何以良好的方式显示它们 不是每个属性都有一个明显的图标->我们想要标签吗 在具有图标的其他文本视图下显示文本视图看起来很糟糕,除非您想手动添加页边距。(缩进) PreferenceFragment有一种“标题”,可以用作标签和值,这将更加完美,因为我有一些交互元素(项目选择器) 但是使用不带SharedReference的preferencefragment来显示任意对
- 不是每个属性都有一个明显的图标->我们想要标签吗
- 在具有图标的其他文本视图下显示文本视图看起来很糟糕,除非您想手动添加页边距。(缩进)
- PreferenceFragment有一种“标题”,可以用作标签和值,这将更加完美,因为我有一些交互元素(项目选择器)
- 但是使用不带SharedReference的preferencefragment来显示任意对象显然是一种(坏的?)
我找了很多,没有得出结论。是否有一个明显的方法我错过了?您实际上可以不费吹灰之力创建设置活动(具有完整的功能) 转到
文件>新建>活动>设置活动
它将创建整个功能-您只需要在中指定开关、列表
res>xml>prefs.xml
通过屏幕设置的值将保存在指定键下的SharedReferences中
要截取通过UI配置到SharedReferences的值,可以将其添加到设置活动中:
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
}
}
}
类设置片段:PreferenceFragmentCompat(){
重写FunonCreatePreferences(savedInstanceState:Bundle?,rootKey:String?){
setPreferencesFromResource(R.xml.pref_常规,rootKey)
FindReference(“系统主题”)?.setOnPreferenceClickListener{
val值=(它作为?ListPreference)?。值
//将值发送到服务器
return@setOnPreferenceClickListener真的
}
}
}
我知道我可以创建一个设置活动。但这并不是如上所述的共享引用。这是关于使用设置活动的UI样式编辑任意数据。不是存储在SharedReferences中而是发送到服务器的数据。是的,这应该可以工作,我唯一剩下的问题是:如何使用首选项片段
实现这一点,但如何将其嵌入底页
(DialogFragment)?因为这就是为什么不能以同样的方式自定义首选项活动/片段的最终原因。(很明显,我不能同时从BottomSheetDialogFragment
和PreferenceFragment
中派生出来。)这已经是一个不同的问题:)你在最初的问题中没有提到底部工作表。在某些方面是的,但这是你“仅仅”使用PreferenceFragment时遇到的一个问题,你不能像使用普通布局那样控制它。