mdpi设备的自定义dimens.xml - 如何完成?

时间:2015-01-23 17:28:31

标签: android layout screen

我的应用程序具有布局,除了具有mdpi屏幕命运的设备外,它在所有设备上看起来都很完美。活动不适合在mdpi设备上进行屏幕显示。

所以我想为这些类型的设备创建特殊的dimens.xml。 我创造了" values-mdpi"我的"值旁边的文件夹"文件夹,在其中创建新的dimens.xml并为mdpi设备设置尺寸值。

RES /值/ dimens.xml:

<resources>

    <dimen name="logo_block_height">100dp</dimen>

</resources>

RES /值-MDPI / dimens.xml:

<resources>

    <dimen name="logo_block_height">50dp</dimen>

</resources>

使用该维度的ImageView:

 <ImageView
        android:layout_width="250dp"
        android:layout_height="@dimen/logo_block_height"
        android:id="@+id/font_logo" android:adjustViewBounds="false" android:src="@drawable/bg_font_logo"
        android:layout_marginTop="20dp" android:layout_marginBottom="20dp"/>

问题是现在所有设备都应用了值,不仅适用于mdpi,还适用于hdpi,xhdpi,xxhdpi。

我希望它能像那样工作:

  • 如果设备屏幕命运是mdpi或更低 - 使用值-mdpi文件夹中的值

  • 如果设备屏幕命运大于mdpi - 请使用默认值&#34;值&#34;文件夹中。

怎么做?

1 个答案:

答案 0 :(得分:2)

所以我只想出一个解决方案,而不为每个屏幕密度创建值文件夹。

当至少一个带有命运限定符的“values”文件夹时,android会为设备屏幕命运选择最合适的文件夹。 这就是它为大于或小于mdpi的所有内容选择“values-mdpi”的原因。

另外,就像ataulm所说的那样,在这种情况下使用屏幕密度限定符是没有意义的。我可以打电话340x480,160dpi,内容不适合,平板电脑,1280x800,160dpi,可用空间太大。

我通过使用minimal-height限定符创建Values文件夹来解决这个问题。 我有文件夹“values-h480dp”,每个设备的值都有最小480 dp的可用高度,并在其中放入默认值。在默认的“值”文件夹中,我为小屏幕的设备设置值。

现在它的工作方式就像我需要的那样:

  • 如果设备的可用高度超过480dp - 它使用“values-h480dp”文件夹中的值。
  • 如果设备的可用高度低于480dp - 它使用“values”文件夹中的值。

对不起我的英语不好,希望这能帮助别人。