我有个问题:
我想在线性布局中添加几行TextViews,并计算文本大小以填充文本。
我花了几个小时研究,我明白了。
在Android中计算文本大小非常复杂,因为有几个屏幕具有不同的dpi。
我躲了几个小时,但没有成功。
发布于 2022-08-14 09:06:19
我通过这种方式找到了解决办法:
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);我测试了几个屏幕的大小(大约10个),并工作在所有(肖像和景观在其中大多数)。
我对所有行使用相同的text_len (最大),因为我希望all.dDensity_sp/text_len的文本大小相同)* 2;
et.setTextSize(TypedValue.COMPLEX_UNIT_SP, sp);我测试了几个屏幕的大小(大约10个),并工作在所有(肖像和景观在其中大多数)。
对于所有行,我使用相同的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);https://stackoverflow.com/questions/73350367
复制相似问题