如何定义 PreferenceScreen 的横向布局?

问题描述 投票:0回答:1

Android PreferenceScreen 布局在

res/xml
文件夹中定义为
root_preferences.xml
。 我如何定义它的横向版本? 通常,根据我的理解,您会创建一个目录
layout-land
并在其中放置相同的命名版本。 我尝试了这个,但它抱怨没有常规版本的布局,因为我认为它在
layout
目录中查找
root_preferences.xml
但它不在那里。

我还尝试将

root_preferences.xml
放入
layout
目录中,但无法构建项目。 它无法解析 Class PreferenceScreen 并且建议的“添加依赖项”解决方案没有执行任何操作。

android layout orientation preferencescreen
1个回答
0
投票

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
可以显示它是如何使用的

© www.soinside.com 2019 - 2024. All rights reserved.