如何调整TextView的大小,以使文本在所有设备上的比例相同

时间:2016-12-16 23:21:04

标签: android android-layout

如何设置TextView的文本大小,以便无论是在平板电脑还是低分辨率手机上运行,​​它仍将始终占据相同的高度。我正在尝试:

public float adjustSP(float sp) {
    Resources r = getActivity().getApplicationContext().getResources();
    float density = r.getDisplayMetrics().density;
    return sp / density;
}

然后,当我创建文本视图时:

 TextView textView = new TextView(activity);
 textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 60.0f);
 textView.setText(message.getMessage());
 textView.setLayoutParams(new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT, ScrollView.LayoutParams.WRAP_CONTENT));

但结果不一致,说实话,有点奇怪。在平板电脑上它是正确的大小 - 大约是屏幕的1/3,适用于适量的文本,但是在Nexus S模拟器上它是巨大的 - 每个屏幕基本上是1个字。

3 个答案:

答案 0 :(得分:1)

对于文本视图,text-size从不使用“dp”,而是使用“sp”。 另外,对于不同的android设备使用dimens.xml也可以完成这项工作。

答案 1 :(得分:0)

请参阅Android supporting multiple screen 我还建议您不要硬编码UI元素的宽度/高度

答案 2 :(得分:0)

如果你想尝试一些例如autofittextview

的东西,有些图书馆会为你做这件事