为 mdpi 设备自定义 dimens.xml - 如何完成?
Custom dimens.xml for mdpi devices - how it can be done?
我的应用程序有布局,在所有设备上看起来都很完美,除了具有 mdpi 屏幕命运的设备。 Activity 只是不适合在 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 - 使用默认 "values" 文件夹。
如何实现?
所以我只想出了一个解决方案,没有为每个屏幕密度创建值文件夹。
当至少创建了一个 "values" 个具有命运限定符的文件夹时 android 选择最适合设备屏幕命运的文件夹。
这就是为什么它为大于或小于 mdpi 的所有内容选择 "values-mdpi" 的原因。
此外,如 所说,在那种情况下使用屏幕密度限定符是没有意义的。我可以有 phone 340x480 160dpi 的内容不适合和 Tablet 1280x800 160dpi 那里有太多空闲 space.
我通过创建带有最小高度限定符的 Values 文件夹解决了这个问题。
我有一个文件夹 "values-h480dp",其中包含每个设备的最小可用高度为 480 dp 的值,并将默认值放入其中。在默认 "values" 文件夹中,我为小屏幕设备设置了值。
现在它像我需要的那样工作了:
- 如果设备的可用高度超过 480dp - 它使用 "values-h480dp" 文件夹中的值。
- 如果设备的可用高度小于 480dp - 它使用来自 "values" 文件夹的值。
抱歉我的英语不好,希望这对某人有所帮助。
我的应用程序有布局,在所有设备上看起来都很完美,除了具有 mdpi 屏幕命运的设备。 Activity 只是不适合在 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 - 使用默认 "values" 文件夹。
如何实现?
所以我只想出了一个解决方案,没有为每个屏幕密度创建值文件夹。
当至少创建了一个 "values" 个具有命运限定符的文件夹时 android 选择最适合设备屏幕命运的文件夹。 这就是为什么它为大于或小于 mdpi 的所有内容选择 "values-mdpi" 的原因。
此外,如
我通过创建带有最小高度限定符的 Values 文件夹解决了这个问题。 我有一个文件夹 "values-h480dp",其中包含每个设备的最小可用高度为 480 dp 的值,并将默认值放入其中。在默认 "values" 文件夹中,我为小屏幕设备设置了值。
现在它像我需要的那样工作了:
- 如果设备的可用高度超过 480dp - 它使用 "values-h480dp" 文件夹中的值。
- 如果设备的可用高度小于 480dp - 它使用来自 "values" 文件夹的值。
抱歉我的英语不好,希望这对某人有所帮助。