小屏幕上的布局问题

时间:2018-02-12 14:34:46

标签: android android-layout layout

我正在开发Android应用程序。布局在每台设备上都能正常工作,除非设备屏幕尺寸为480x800&以下。

如何仅通过定位该屏幕尺寸或更少来创建单独的布局?

我已经尝试layout-hdpilayout-small-hdpi& layout-normal-hdpi因为像Nexus S这样的手机,Nexus One属于hdpi类别。但是当我创建像layout-hdpi这样的单独布局时,那些布局正在影响像Pixel,Pixel2,Nexus 5等大屏幕的手机。

先谢谢

3 个答案:

答案 0 :(得分:0)

它不容易,但您也可以根据最小宽度指定布局,并提供数字。您可以通过这种方式获得更详细和单独的布局,但根据我的经验,您仍会不时遇到该问题。在我目前使用这种方法的项目中,我有W360和W400的特定文件夹来处理一个特定屏幕的较小设备 https://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts

答案 1 :(得分:0)

您正在寻找的是具有最小宽度限定符的布局存储桶。 设置最小宽度的布局将处于活动状态,除非两个尺寸(宽度或高度)中的较小者都低于您可以选择的特定值。

因此,当设备的最小宽度低于某个值 X 时,它将使用默认布局,当值 X 或更高时,它将使用定义的最小值宽度布局。

要在Android Studio中创建此类布局文件,您需要右键单击布局目录,然后单击 new - >布局资源文件并从可用限定符列表中选择最小屏幕宽度限定符。现在你需要指定你的最小宽度,在你的情况下应该略高于480dp。为它指定与当前布局文件相同的名称。将代码放在480p以上的最小宽度的设备上。现在更改其他布局文件中的代码,没有最小的宽度限定符,以支持更小的屏幕。

如需进一步参考,请查看官方Android Developer页面。

答案 2 :(得分:0)

手机(与平板电脑相对)往往大约有三个尺寸组(就Android资源而言):宽度最小为320dp的那些,360dp的那些,以及410dp的那些。资源框架为您提供了一种方法来定位任何更大的设备而不是某个宽度,因此正确的方法是将屏幕的布局放在默认文件夹上,并将布局设置为其中一个合格文件夹中的较大屏幕。

由于听起来您的布局目前适用于360dp或更大的任何内容,您可以创建两个布局目录:

res/
    layout/
    layout-sw360dp/

将小屏幕的特殊布局放在res/layout/内,并将“普通”布局放在另一个目录中。