使TextView的大小在设备和密度上相等

时间:2014-01-03 21:00:53

标签: android textview

我一直在搜索,但无法找到解决方案。我有一个TextView自定义ArrayAdapter,文字大小为18sp。我在两个模拟器上测试了这个:7“mdpi和4.7”xhdpi,差别非常明显。它基本上破坏了我的布局。我正在为版本4 +开发。

Text on different screens

较小的一个对于mdpi显示器来说太小而第一个太大了。如何在这两个设备之间使文本显示相等(或具有非常小的差异)?字体设置设置为正常。

2 个答案:

答案 0 :(得分:0)

为特定密度创建不同的values目录,并在dimen.xml中设置值。

例如:

创建values-mdpivalues-xhdpi,每个目录都包含dimen.xml,您可以在其中指定选择适当密度时要使用的尺寸。

答案 1 :(得分:0)

您可以使用res/values/dimens.xml来定义文字大小,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="text_size">18sp</dimen>
</resources>

然后,您可以为res/values文件夹使用多个configuration qualifiers,为每个屏幕尺寸提供不同的dimens.xml。例如:

res/values-small/dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="text_size">24sp</dimen>
</resources>

res/values-large/dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="text_size">14sp</dimen>
</resources>

并在布局中应用您的维度:

<TextView android:id="@android:id/title"
          android:textSize="@dimen/text_size"/>

可选

请参阅res/values/styles.xml中的维度,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="my_text">
        <item name="android:textSize">@dimen/text_size</item>
    </style>
<resources>

在布局中应用这样的风格:

<TextView android:id="@android:id/title"
          style="@style/my_text"/>