我想避免为不同的屏幕分辨率创建多个布局。我想根据屏幕密度和分辨率以编程方式调整文本大小。所以,如果屏幕的大小增加/减少,我想增加/减少文本大小。文本必须占用相同百分比的屏幕。
我尝试为18sp的中等大小的文本做这样的事情:
textView.setTextSize(18 * getActivity().getResources().getDisplayMetrics().density);
textView.setText("Some text");
在较大密度的屏幕上文字会变得更大,而且在较大的设备上看起来很好,但在具有大密度文字的小型设备上真的非常大。
如何根据屏幕大小和屏幕密度以编程方式更改文本大小?谢谢。
答案 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"在这种情况下,字体大小的表现非常好。