1

我需要根据屏幕尺寸设置应用程序的所有文本内容。我的意思是按钮、文本视图等...例如,如果我在 Pixel C 平板电脑中执行应用程序,则按钮文本大小和文本视图文本大小必须非常大,而在 320x240 设备中非常小。

首先我尝试过autoSizeTextType,但最后我放弃了这种方法,因为它只能应用于 TextView 而不能应用于 Buttons 等......

之后,我尝试了这种方法:https://developer.android.com/training/multiscreen/screendensities在 res 文件夹中创建 4 个文件夹:

values-hdpi
values-mdpi
values-xhdpi
values-xxhdpi

在其中有一个dimens.xml带有文本大小值的文件,例如,这是文件夹内的values-xhdpi文件:

<resources>
    <dimen name="big_text">35sp</dimen>
    <dimen name="medium_text">25sp</dimen>
    <dimen name="small_text">20sp</dimen>
</resources>

对于其他文件夹,我放置了不同的值来测试它。

它有效......但是......不是我正在寻找的行为。为什么?因为我在两个不同的 xhdpi 模拟器中执行了应用程序,Pixel C 和 Nexus 4。Pixel C 的分辨率更高,但屏幕超级大,所以两个设备使用相同的dimens.xml文件,但按钮和文本在Nexus 4 中的 Pixel C 和 super big,如图所示:

在此处输入图像描述

我应该怎么做才能获得在所有设备中占据屏幕相同部分的短语的文本大小值?

4

1 回答 1

1

您走在正确的道路上,但您应该使用最小宽度可用宽度限定符,而不是密度限定符。如您所见,显示器的像素密度实际上与该显示器的物理尺寸没有任何关系。

最小宽度限定符是区分屏幕尺寸的“正常”方式。“最小宽度”为您提供有关设备大小的保证,无论其当前方向如何。

values/           <-- fallback for everything else
values-sw400dp/   <-- modern "large" phones
values-sw600dp/   <-- 7" tablets
values-sw720dp/   <-- 10" tablets

另一方面,可用的宽度限定符为您提供有关当前方向的设备大小的保证。也就是说,纵向手机的可用宽度比横向手机小得多(而纵向/横向手机的最小宽度值相同)。

values/          <-- fallback for everything else
values-w400dp/   <-- any device that currently has 400dp or more available width
values-w600dp/   <-- 600dp or more available width
values-w720dp/   <-- 720dp or more available width

同样,真正的问题是您是否想为不同的方向使用相同的文本大小。如果是,请使用最小宽度。如果没有(您想要不同方向的不同尺寸),请使用可用宽度

于 2019-09-24T16:21:15.383 回答