不同API级别之间的Android布局差异

时间:2013-08-04 05:41:22

标签: android android-layout

我的问题围绕着一个具体例子所代表的一般问题。

当我创建一个带有以下标记的按钮时:

<Button
        android:id="@+id/btnLookup"
        style="?android:attr/buttonStyleSmall"
        android:layout_height="match_parent"
        android:layout_width="40dp"
        android:layout_weight="1"
        android:enabled="false"
        android:text="@string/go_button"
        android:textColor="@color/black" />

将应用程序部署到API Level 10设备,按钮的高度远小于部署到API Level 17设备时相同按钮的高度 - 也就是说,较小的按钮不会填充高度其中的其他项目是水平对齐的衬里布局,而较大的版本则是。

这可能与fill_parent vs match_parent有关,我不确定。

我遇到的问题是如何定义一个布局,使各种设备的基本属性相同。

如果答案是,你没有 - 你使用多个布局文件然后我的下一个问题是人们用什么资源来解决这个问题?例如,api级别之间是否存在差异列表,以便有人可以查阅,我们其他人只是通过反复试验来解决这些问题吗?

1 个答案:

答案 0 :(得分:0)

从一台设备到另一台设备的布局呈现方式的差异不应与设备上运行的Android版本相关。然而,由于不同的屏幕密度和尺寸,差异可能(并且主要是)。

在标注视图时,使用dp(密度像素)而不是px(像素)时,此问题(在某种程度上)无效。您可以通过对不同的屏幕密度使用不同的dimens.xml来进一步减少奇怪现象。这样,dimens.xml内部values-mdpivalues-hdpi内部另一个values-xhdpi// Get screen dimensions // Add a ViewTreeObserver.OnGlobalLayoutListener() to the view // Update height and width for items // Position items using screenWidth and screenHeight 内另一个{{1}}。

我更喜欢另一种方法。我喜欢使用屏幕尺寸处理项目的定位。我在运行时获取屏幕宽度和高度,并以编程方式将边距和填充添加到布局项。

{{1}}

这种,傻瓜式的渲染。在某些情况下,不确定这种方法是否失败。

修改

您可以通过'Providing Resources'阅读,了解Android用于决定给定设备/情境的最佳资源的标准。