繁体   English   中英

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

[英]Android Layout Difference Between Different API Levels

我的问题围绕一个具体示例代表的一般问题。

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

<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与match_parent有关。

我遇到的问题是如何定义一个布局,使整个设备的基本属性都一样。

如果答案是肯定的,那么您不会-使用多个布局文件,那么我的下一个问题是人们会使用哪些资源来淘汰这些内容? 例如,是否有清单列出了api级别之间的差异,以便某人可以查阅它,而我们其他人是否只是通过反复试验就避免了这些事情?

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

在确定视图尺寸时,通过使用dp (密度像素)而不是px (像素)可以在某种程度上消除此问题。 您可以通过对不同的屏幕密度使用不同的dimens.xml来进一步减少dimens.xml 这样,您将在values-mdpi内有一个dimens.xml ,在values-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 

这有点愚弄了渲染。 不知道这种方法在某些情况下是否会失败。

编辑:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM