【发布时间】:2022-08-19 22:58:41
【问题描述】:
我有这个问题:
我想在线性布局中添加几行 TextView 并计算文本大小 用文本填充它。
我花了几个小时研究,我明白了。
在Android中计算文本大小非常复杂,因为有几个屏幕 不同的dpi。
我打了几个小时都没有成功。
我有这个问题:
我想在线性布局中添加几行 TextView 并计算文本大小 用文本填充它。
我花了几个小时研究,我明白了。
在Android中计算文本大小非常复杂,因为有几个屏幕 不同的dpi。
我打了几个小时都没有成功。
我通过这种方式找到了解决方案:
final float scaledDensity_sp = getResources().getDisplayMetrics().scaledDensity;
final float widthPixels = getResources().getDisplayMetrics().widthPixels;
float sp = ((widthPixels / scaleI found the solution from this way:
final float scaledDensity_sp = getResources().getDisplayMetrics().scaledDensity;
final float widthPixels = getResources().getDisplayMetrics().widthPixels;
float sp = ((widthPixels / scaledDensity_sp) / text_len) * 2;
et.setTextSize(TypedValue.COMPLEX_UNIT_SP, sp);
我测试了几种屏幕尺寸(大约十个)并且效果很好(大多数都是纵向和横向)。
我对所有行使用相同的 text_len(最大),因为我希望 all.dDensity_sp) / text_len) * 2 的文本大小相同;
et.setTextSize(TypedValue.COMPLEX_UNIT_SP, sp);
我测试了几种屏幕尺寸(大约十个)并且效果很好(大多数都是纵向和横向)。
我对所有行都使用了相同的 text_len(最长),因为我想要所有的文本大小相同。
2022 年 8 月 19 日更新:
今天我更新了我的华为到EMUI 12.0.0,我需要添加:
// For EMUI 12.0.0
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
{
sp--;
}
前
et.setTextSize(TypedValue.COMPLEX_UNIT_SP, sp);
【讨论】: