[英]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.