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

Android 使TextView的大小在设备和密度上相等,android,textview,Android,Textview,我一直在研究这个问题,但找不到解决办法。我有一个自定义的TextView,它进入一个ArrayAdapter,文本的大小是18sp。我已经在两个模拟器上进行了测试:7“mdpi和4.7”xhdpi,差异非常明显。它基本上破坏了我的布局。我正在开发版本4+ 较小的一个对于mdpi显示太小,而第一个太大。如何使这两个设备之间的文本显示相等(或差异非常小)?字体设置设置为正常。为特定密度创建不同的值目录,并在dimen.xml中设置值 例如: 创建值mdpi和值xhdpi,每个目录都将包含dimen

我一直在研究这个问题,但找不到解决办法。我有一个自定义的
TextView
,它进入一个
ArrayAdapter
,文本的大小是
18sp
。我已经在两个模拟器上进行了测试:7“mdpi和4.7”xhdpi,差异非常明显。它基本上破坏了我的布局。我正在开发版本4+


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

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

例如:


创建
值mdpi
值xhdpi
,每个目录都将包含
dimen.xml
,在其中指定选择适当密度时要使用的大小。

您可以使用
res/values/dimens.xml
这样定义文本大小:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="text_size">18sp</dimen>
</resources>
res/values large/dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="text_size">24sp</dimen>
</resources>
<?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"/>
<TextView android:id="@android:id/title"
          style="@style/my_text"/>


您尝试过18dp而不是使用18sp吗?@epsilondelta结果是一样的。阅读更多内容后,应该提到,这些都是不推荐使用的,而推荐使用18dp。
<TextView android:id="@android:id/title"
          style="@style/my_text"/>