【发布时间】:2015-03-19 06:48:40
【问题描述】:
我正在开发一个具有纵向模式相对布局的计算器应用程序。所有 Buttons 和 TextViews 都被放置在这个单一的相对布局和相同的 Land 模式下的相对布局中。我已经在网上挖掘了将近 15 天,但没有发现任何相关内容。我的应用程序也支持平板电脑。 MinSDKVer 为 14,Target 为 v21。
目前我正在尝试这些 Layouts 文件夹
1:layout-sw400dp(用于 Note 3 和 Mate 7)
2:layout-sw600dp(用于 7" 平板电脑)
3:layout-sw720dp(用于 8.9" 和 10" 平板电脑)
4:layout-small-ldpi
5:layout-normal-ldpi
6:layout-normal-mdpi
7:layout-large-mdpi(适用于屏幕 >5" 的 480×800 手机,如 Pantech Sky Vega Note)
8:layout-normal-hdpi
9:layout-large-hdpi(适用于 Galaxy Note 2、Galaxy Note 和 Galaxy Mega)
10:layout-normal-xhdpi
11:layout-normal-xxhdpi
12:layout-large-xxhdpi(适用于 Galaxy Note 4)
13:layout-normal-xxxhdpi(适用于 Nexus 6 和其他 QFHD 手机)
所有这些布局都有陆地模式。
我放置 (layout-sw400dp) 时出现问题。 Nexus 6、Note 4、Note 2、Galaxy Mega 和大型 480×800 手机开始使用此布局而不是预期布局。
这是因为 swdp 的优先级高于 layout-normal-xxxx 或 layout-large-xxxx。
Note 3 和 Mate 7 是 400dpi 设备,这就是我放置 layout-sw400dp 的原因。在此之前,除了 Note 3 和 Mate 7 之外,所有设备都可以正常工作。
其他问题是分辨率为 540×960 的设备。
我已经尝试过 layout-320dp。通过使用这个 xhdpi 设备和 xxhdpi 设备开始使用这个布局。
我也尝试过这些 540×960 的布局,但即使为 layout-long-port-800×480 制作了单独的文件夹,这些布局也不起作用。
1:布局-h960dp-w540dp
2:layout-long-port-960×540
3:layout-normal-960×540
我通过创建具有实际规格的不同设备从 Android Virtual Device Manager 读取所有屏幕。
我尝试在 java 文件中手动设置 540×960 设备的布局并成功,但我不想这样做,我也不想使用线性布局。
我深入研究了《Android异屏支持及提供资源》。
请告知布局所需的所有文件夹的名称以支持所有 android 设备或使用 java 执行此操作的任何其他有效方式。
我已经上传了Mediafire上的所有资源文件,你可以下载Calculator Layout.zip
任何建议和解决方案将不胜感激提前谢谢
对不起,英语不是我的母语。
【问题讨论】:
-
有这么多的布局有点矫枉过正。大多数更改可以通过引用不同的dimensions 来实现。
-
@Lamorak 举例说明如何使用维度实现我想要的目标,因为维度只不过是包含可以从任何地方引用的维度值的单个文件。如果手机没有选择预期的布局,那么我该如何提供正确的高度和宽度...我不能使用填充父级或包装内容
-
通常当您希望布局适应不同的屏幕尺寸时,主要的变化是视图的尺寸。您可以只参考尺寸,而不是拥有两个相似的布局。没有一个维度文件,您可以在
values-normal-hdpi等文件夹中拥有其中的几个。 -
@Lamorak 你最后的建议很好,但你不认为在这种情况下设备也可以选择意想不到的尺寸
-
好吧,至少机会等于选择了一个意想不到的布局,但您将避免大量重复的代码和工作。您的计算器布局是否如此复杂,以至于担心屏幕大小?
标签: android android-layout android-relativelayout