android中的布局管理

android中的布局管理,android,android-layout,Android,Android Layout,我已经为所有屏幕分辨率创建了一个应用程序。因此,根据文档,我在一个应用程序中创建了一个资源目录列表,该应用程序为不同的屏幕大小提供了不同的布局设计,并为中、高和超高密度屏幕提供了不同的位图绘制功能 例如: res/layout normal/my_layout.xml//正常屏幕大小的布局(“默认”) res/layout small/my_layout.xml//小屏幕布局 res/layout large/my_layout.xml//大屏幕布局 res/layout xlarge/my_l

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

例如:

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(720x1280)

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


那么有没有办法解决这个问题呢?请帮我解决这个问题。

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

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;
并根据我使用的布局检查设备的高度/宽度,如

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。我已将所有布局放在布局文件夹中,它对我有效。

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

ldpi : 240X320
mdpi : 320X480
hdpi : 480X800
并在android清单文件中授予权限

 <supports-screens android:normalScreens="true"
        android:anyDensity="true" android:largeScreens="true"
        android:smallScreens="true" />


我正在应用这种方法在android上制作通用应用程序。它会很好地工作,像这样尝试

@hasMukh指出了正确的方向,但如果您希望这4台设备的布局更精确的话。我建议您使用“布局密度分辨率”格式命名布局文件夹。例如,

对于HVGA(320x480),布局文件夹应为“layout-hdpi-480x320” 对于WQVGA(240x400),布局文件夹应为“layout-ldpi-400x240” 对于WVGA(480x800),布局文件夹应为“layout-mdpi-800x480” 对于WXGA(720x1280),布局文件夹应为“layout-mdpi-1280x720”


这种方法只有在你计划以特定的少数设备为目标时才有效。而且你只能保留一个Drawabable文件夹,并在布局中使用dp值。

是的……我也这样做了……但没有什么好结果……它对页面有效,但对所有页面无效……是的……我知道这种方法我们可以做到……但这不可能做到其他任何事情吗waydocumentation明确表示要使用如上所述的限定符,而不是这种奇怪的组合。