【发布时间】:2015-03-22 19:38:21
【问题描述】:
我的应用程序有布局,在所有设备上看起来都很完美,除了具有 mdpi 屏幕命运的设备。活动只是不适合 mdpi 设备上的屏幕。
所以我想为这些类型的设备创建特殊的dimens.xml。 我在“values”文件夹旁边创建了“values-mdpi”文件夹,在其中创建了新的 dimens.xml 并为 mdpi 设备设置了尺寸值。
res/values/dimens.xml:
<resources>
<dimen name="logo_block_height">100dp</dimen>
</resources>
res/values-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 或更低 - 使用 values-mdpi 文件夹中的值
如果设备屏幕命运大于 mdpi - 使用默认的“值”文件夹。
如何实现?
【问题讨论】:
-
我建议您以其他方式解决您的问题。对可绘制对象以外的任何内容使用密度限定符(例如
-mdpi)不太可能满足您的需求。 -
您也必须在
values文件夹中添加一个dimens.xml。使用默认值。 -
@DerGolem 当然,我的“值”文件夹中有它。
-
它对我有用。但我添加了所有密度文件夹。所以,values-ldpi、values-mdpi、values-hdpi、....
-
@udenfox 请提供复制示例代码。当您在dimens.xml 中指定dip 值时,当然密度之间应该没有差异。