在Android中支持多屏幕而不使用多个布局目录

时间:2015-09-07 09:06:12

标签: android android-layout

我已经开发了几个月的应用程序,而且我已经阅读过使用layout-smalllayout-largelayout-xlarge等来支持多种屏幕分辨率{{{ 1}}在deprecated开始(如果我错了,请纠正我)。因此,我仍在使用多个Android 3.0目录,但在设计应用程序时需要做很多工作。

我的问题是:

  • 有没有办法设计layout一次支持多个屏幕,而不使用多个layout个文件?

  • 不推荐使用layout-size.xml目录时的替代解决方案是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用尺寸。基本上,你会有同样的事情,有多个目录,但对于values目录,因此valuesvalues-sw600dpvalues-sw600dp-land等。

在这些内容中,您可以拥有dimens.xml,其中包含以下内容:

<!-- In values/dimens.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="my_specific_dimension">150dp</dimen>
    //More items...
</resources>

<!-- In values/dimens.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="my_specific_dimension">150dp</dimen>
    //More items...
</resources>

现在,您可以在单个布局文件中使用@dimen/my_specific_dimension,例如宽度或高度,并且就多个布局情况而言,它将使用基于屏幕类别的正确尺寸。< / p>

仅当布局基本相同且尺寸不同时才有效。该解决方案几乎没有定制。如果要使用不同的布局,则仍需编写多个布局文件。我认为x-large等的弃用是在他们引入layout-sw600dplayout-landlayout-sw600dp-land之后。查看how to declare different layout for different sizes的文档。它解释了如何使用sw<N>dp限定符。

答案 1 :(得分:0)

不幸的是,没有支持多个屏幕的标准布局。 例如,普通布局可以显示几英寸,因此可以是其中一些更大的高度或宽度。但是,它应该为每个屏幕定义唯一的布局。