【发布时间】:2023-03-04 15:09:01
【问题描述】:
我正在编写一个应用程序。它需要在旧的 android 操作系统上运行才能有用。我使用 PreferencesActivity 编写了首选项屏幕,该 PreferencesActivity 填充了包含 PreferenceScreen 的 options.xml 文件。它没有首选项子菜单(因此 PreferenceFragment 没有真正的好处)。
在 Android 2.1(2.2 和 2.3,尚未在 ICS 上测试)中,屏幕在横向模式下正常显示:
但在 Jellybean 上,它看起来像这样:
看起来很糟糕。我没有定义为布局,只是标准的 addPreferencesFromResource()。有谁知道这可能是什么原因?还是解决方案?
我的 onCreate 看起来像这样:
protected void onCreate(Bundle savedInstanceState) { //
super.onCreate(savedInstanceState);
Log.i(TAG, "Options Activity Loaded.");
setTitle(getString(R.string.optionsTitle));
addPreferencesFromResource(R.xml.options);
setupListeners();
}
其他所有东西都只是创建 Preference 对象并在它们被点击时分配方法来做事。我不想为 PreferenceFragment 和 PreferenceActivity 编写代码。如果最大版本的市场份额没有该 API,并且他们不会将其添加到兼容性库中,我不明白谷歌希望我们如何使用 Fragment API。
【问题讨论】:
-
我觉得 ICS/JB 偏好屏幕有那个填充。我不确定是否有办法删除它,但我没有给出明确的答案(这就是我刚刚发表评论的原因。)
-
我会直接抛出
addPreferencesFromResource()已被弃用。可能在 4.0+ 上使用仍受支持的方法(在该文档页面中有详细说明)会产生正确的结果。 -
希望避免这些...但可能不得不投降并无论如何都要这样做。我不明白他们为什么不让它完全兼容。填充没有理由。
标签: android padding preferenceactivity preference windowed