我在android中创建了一个简单的layout
,带有一些自定义按钮(默认情况下不是android提供的)。图像在屏幕尺寸2.7到5.1上显示正确。但是buttons
在屏幕尺寸5.4和更大的屏幕上显示拉伸(尝试直到屏幕尺寸为7)。我已经制作了四个相同的图像,它们的密度相同,并且相应地放在文件夹ldpi,mdpi,hdpi,xhpi
中。我需要知道我是否需要为不同的屏幕创建不同的layouts
?或者android从相应的文件夹中自动获取图像?有些身体请指导我,因为我是Android的新手,因为我正在努力创建{{1}瞄准Android移动设备。
答案 0 :(得分:4)
如果您设计的布局一致,则无需定义不同的layout
文件夹(layout-land
,layout-large
,layout-small
)。 Android OS
将处理此问题(关于images
显示)。您唯一需要做的就是在<support-screens>
中添加manifest
,以下是<support-screens>
:
<supports-screens android:resizeable=["true"| "false"]
android:smallScreens=["true" | "false"]
android:normalScreens=["true" | "false"]
android:largeScreens=["true" | "false"]
android:xlargeScreens=["true" | "false"]
android:anyDensity=["true" | "false"]
android:compatibleWidthLimitDp="integer"
android:largestWidthLimitDp="integer"/>
创建一致布局的提示:
layout
参数进行硬编码,例如width
,height
等。px
”。使用“sp
”表示文字大小,使用“dp
”表示layout-width
,layout-height
等。RelativeLayout
和LinearLayout
,不要使用AbsoluteLayout
,因为它已被弃用。 ScrollView
所需的任何地方使用layouts
,因为它支持单一视图。有关更多信息,请查看Support Multiple Screens。
的Android开发人员文档答案 1 :(得分:3)
您应该为不同的屏幕尺寸采用不同的布局xml,并将它们放入res文件夹。
对于因Android版本而接近不同的密度,可以像这样进行
res/layout/mylayout.xml # Default layouts
res/layout-v4/mylayout.xml # Android 1.6 layouts
res/layout-v11/mylayout.xml # Android 3.0 layouts
虽然对于不同的屏幕尺寸,您需要一些这样的布局:
res/layout/main_activity.xml # For handsets (smaller than 600dp available width)
res/layout-sw600dp/main_activity.xml # For 7” tablets (600dp wide and bigger)
res/layout-sw720dp/main_activity.xml # For 10” tablets (720dp wide and bigger)
可以找到有关这些不同布局(限定符)的更多信息here.
完成此question and its answers too。
注意:处理不同屏幕尺寸时,请始终使用相对布局;这是一个加号。
要了解有关资源限定符的更多信息,这些链接很好。
答案 2 :(得分:1)
以下链接将帮助您了解在Android中支持多个屏幕: http://developer.android.com/guide/practices/screens_support.html
答案 3 :(得分:1)
如果你在所有密度文件夹中有不同的图片,android会自动从相应的文件夹中取出。确保您在密度文件夹中使用九个补丁图像。
答案 4 :(得分:1)
在manifest.xml中使用它
<supports-screens
android:resizeable="true"
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true"/>
How to solve Android screen size for different mobile devices?
http://developer.android.com/guide/practices/screens_support.html