1

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

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

<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 级别 10 设备,按钮的高度远小于部署到 API 级别 17 设备时相同按钮的高度 - 也就是说,较小的按钮不会填充其他项目的高度它是水平对齐的衬垫布局,而较大的版本是这样。

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

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

如果答案是,您不需要 - 您使用多个布局文件,那么我的下一个问题是人们使用什么资源来解决这些问题?例如,是否在某个地方列出了 api 级别之间的差异,以便有人可以查阅它,我们的其他人是否只是通过反复试验来解决这些问题?

4

1 回答 1

0

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

这个问题(在某种程度上)通过在尺寸视图时使用dp(密度像素)而不是(像素)来消除。您可以通过对不同的屏幕密度px使用不同的方法来进一步减少异常。dimens.xml这样,您将有一个dimens.xmlinside values-mdpi,另一个 inside values-hdpi,还有另一个 in values-xhdpi

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

// Get screen dimensions

// Add a ViewTreeObserver.OnGlobalLayoutListener() to the view

    // Update height and width for items

    // Position items using screenWidth and screenHeight 

这在某种程度上证明了渲染。不确定这种方法在某些情况下是否会失败。

编辑:

您可以通读“提供资源”以了解 android 用于为给定设备/情况确定最佳资源的标准。

于 2013-08-04T06:06:35.597 回答