首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android环境下的布局管理

android环境下的布局管理
EN

Stack Overflow用户
提问于 2012-03-21 07:42:26
回答 3查看 3.2K关注 0票数 4

我已经为所有屏幕分辨率创建了一个应用程序。因此,根据文档,我在一个应用程序中创建了一个资源目录列表,为不同屏幕大小提供不同的布局设计,为中、高和超高密度屏幕提供不同的位图绘图。

例如:

res/layout-normal/my_layout.xml //普通屏幕大小的布局(“默认”)

res/layout-small/my_layout.xml //小屏幕布局

res/layout-large/my_layout.xml //大屏幕布局

res/layout-xlarge/my_layout.xml //超大屏幕布局

现在,在不同的设备中运行我的应用程序时,我注意到一些具有不同屏幕分辨率的设备从相同的资源目录(即布局正常)中获取布局,这类设备的示例如下:

HVGA (320 X 480)

WQVGA 400 (240 X 400)

WVGA (480 X 800)

WXGA (720 X 1280)

由于使用来自相同资源目录(即布局-正常)的布局,所以我很难管理所有设备的UI之间的空间,因为它们采用相同的布局。因为如果我管理HVGA的布局,那么它在其他地方看起来不太好,因为分辨率。

有什么办法解决这个问题吗?请帮我解决这个问题。

EN

回答 3

Stack Overflow用户

发布于 2012-03-21 07:52:37

不要为每个布局准备xml。只需为所有用户(ldp、mdpi、hdpi)制作相同名称的图像,并按大小放入这个不同的文件夹。

代码语言:javascript
复制
ldpi : 240X320
mdpi : 320X480
hdpi : 480X800

并允许在文件中使用。

代码语言:javascript
复制
 <supports-screens android:normalScreens="true"
        android:anyDensity="true" android:largeScreens="true"
        android:smallScreens="true" />

我是用这种方式使android.it中的通用应用程序工作得很好,就像这样.

票数 0
EN

Stack Overflow用户

发布于 2012-07-20 05:07:42

@hasMukh指出了正确的方向,但如果你想让这4种设备的布局更加精确。我建议您使用“布局-密度-分辨率”格式的布局文件夹命名。举个例子

对于HVGA(320x480)布局文件夹,WQVGA(240x400)的布局文件夹应该是“ldpi-400x240”,而WVGA(480x800)的布局文件夹应该是“布局-mdpi-800x480”,而WXGA(720x1280)的布局文件夹应该是“ldpi-1280x720”。

只有当您计划针对特定的少数几个devices..and时,此方法才是好的,您只能保留一个拖放文件夹,并将dp值用于布局。

票数 0
EN

Stack Overflow用户

发布于 2012-03-21 07:48:06

我也有同样的问题,我用了另一种方法。获取设备的高度/宽度:

代码语言:javascript
复制
DisplayMetrics displayMetrics = new DisplayMetrics();
    WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); // the results will be higher than using the activity context object or the getWindowManager() shortcut
    wm.getDefaultDisplay().getMetrics(displayMetrics);
    screenWidth = displayMetrics.widthPixels;
    screenHeight = displayMetrics.heightPixels;

并根据我使用的布局检查设备的高度/宽度,如

代码语言:javascript
复制
if(screenWidth == 320 || screenHeight== 480){
        setContentView(R.layout.test_320_480);
    }else if(screenWidth == 240 || screenHeight == 320){
        setContentView(R.layout.test_240_320);
    }else if(screenWidth == 480 || screenHeight == 800 || screenHeight == 854){
        setContentView(R.layout.test_480_800);
    }

对相同屏幕的布局中的每个控件使用相同的id。i hv将所有布局放在布局文件夹中,它对我有效。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9800431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档