根据屏幕密度和屏幕大小以编程方式增加文本大小

时间:2014-04-05 17:03:10

标签: android android-layout textview android-screen-support

我想避免为不同的屏幕分辨率创建多个布局。我想根据屏幕密度和分辨率以编程方式调整文本大小。所以,如果屏幕的大小增加/减少,我想增加/减少文本大小。文本必须占用相同百分比的屏幕。

我尝试为18sp的中等大小的文本做这样的事情:

textView.setTextSize(18 * getActivity().getResources().getDisplayMetrics().density);
textView.setText("Some text");

在较大密度的屏幕上文字会变得更大,而且在较大的设备上看起来很好,但在具有大密度文字的小型设备上真的非常大。

如何根据屏幕大小和屏幕密度以编程方式更改文本大小?谢谢。

2 个答案:

答案 0 :(得分:1)

尝试做这样的事情(使用宽度或高度来获得你想要的结果):

Point size = new Point();
getWindowManager().getDefaultDisplay().getSize(size); 
float percent = .18f;
textView.setTextSize(percent * size.x); // size.x = screen width in pixels

修改

如果使用API​​< 13您可以执行以下操作:

int width = getWindowManager().getDefaultDisplay().getWidth();

答案 1 :(得分:0)

我认为使用" sp"在这种情况下,字体大小的表现非常好。