Android PreferenceScreen 布局在
res/xml
文件夹中定义为 root_preferences.xml
。 我如何定义它的横向版本? 通常,根据我的理解,您会创建一个目录layout-land
并在其中放置相同的命名版本。 我尝试了这个,但它抱怨没有常规版本的布局,因为我认为它在 layout
目录中查找 root_preferences.xml
但它不在那里。
我还尝试将
root_preferences.xml
放入 layout
目录中,但无法构建项目。 它无法解析 Class PreferenceScreen 并且建议的“添加依赖项”解决方案没有执行任何操作。
Android PreferenceScreen 布局在
文件夹中定义为res/xml
。root_preferences.xml
很少有开发人员会将首选项 XML 资源描述为“布局”。
我如何定义它的横向版本?
从技术上讲,您可以创建
res/xml-land/
并将景观资源放在那里。也就是说,这不太可能给你想要的东西。
Android 提供横向布局,因此应用程序在任何方向都看起来不错
再次强调,首选项 XML 资源不是布局。它们是您希望从用户那里收集的偏好的描述。 UI 的呈现方式(尤其是在屏幕级别)由读取首选项 XML 资源的代码决定,而不是由资源本身决定。
方向变化和布局与纵向与横向的比例有关。
虽然从技术上讲是正确的,但这反映了非常古老的 Android 设计思维。正如 Ian Lake 在对您的问题的评论中指出的那样,Android 设计现在更好地遵循其 Web 设计前身,重点关注可用宽度而不是宽高比。例如,对于某些屏幕是否使用两个窗格(例如列表和详细信息)的确定不是“屏幕是否比高度宽”,而是“屏幕是否足够宽以保证两个窗格”。
如果您不喜欢首选项屏幕的“开箱即用”行为,则需要关注 Java 或 Kotlin 代码,而不是首选项 XML。无论设备是纵向、横向、对角线还是方形或圆形屏幕,首选项 XML 都应保持不变。正如 Ian 指出的那样,您可以 使用
PreferenceHeaderFragmentCompat
在窄屏幕上使用单个窗格,在较宽的屏幕上使用两个窗格,尽管 PreferenceHeaderFragmentCompat
的文档有限并且可能需要一些实验。看起来SupportPreferenceDemos
可以显示它是如何使用的。