android - 模拟首选项屏幕并显示键值属性
问题描述
我如何在不做太多工作的情况下模仿偏好屏幕的设计或 android 的“编辑联系人”屏幕?我必须为一个对象显示大约 12 个属性,并且不知道如何以一种好的方式显示它们。
- 不是每个属性都有一个明显的图标存在 -> 我们想要标签?
- 在具有图标的其他文本视图下方显示文本视图看起来很糟糕,除非您想手动添加边距。(缩进)
- PreferenceFragment 有一种“Title”,可以用作Label 和Value,这样会更完美,因为我有一些交互元素(item picker)。
- 但是使用没有 SharedPreferences 的preferencefragment 来显示任意对象显然是一个(坏的?)hack。
我搜索了很多,并没有得出结论。有没有我错过的明显方式?
解决方案
您实际上可以毫不费力地创建设置活动(具有完整功能)。
去File > New > Activity > Settings Activity
。
它将创建整个功能 - 您只需要在
res > xml > prefs_.xml
您通过屏幕设置的值将保存在指定键下的 SharedPreferences 中。
要拦截通过 UI 配置到 SharedPreferences 的值,您可以将其添加到 SettingsActivity:
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
}
}
}
推荐阅读
- authentication - 解释当用户登录网站时会发生什么
- java - HeapSort 实现有 NullPointerException
- python - 我的简单 while 循环将我的计算机挂在较大的输入上
- c# - 外部登录和 c# web api
- r - 如何为重复的case_when创建函数
- php - 计算foreach中每个id的迭代次数
- parameters - 如果传递参数的任何人未定义,我如何解决 url 上的问题?
- nativescript - 使用 NativeScript 提供的 Enterprise Auth 项目模板配置 OAuth 2 身份验证
- c++ - stringstream 和 nullptr 的子类
- python - How to count child table items with or without join to parent table using SQLAlchemy?