首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算文本大小来填充线性布局宽度与文本的行在Android?

如何计算文本大小来填充线性布局宽度与文本的行在Android?
EN

Stack Overflow用户
提问于 2022-08-14 09:06:19
回答 1查看 24关注 0票数 0

我有个问题:

我想在线性布局中添加几行TextViews,并计算文本大小以填充文本。

我花了几个小时研究,我明白了。

在Android中计算文本大小非常复杂,因为有几个屏幕具有不同的dpi。

我躲了几个小时,但没有成功。

EN

回答 1

Stack Overflow用户

发布于 2022-08-14 09:06:19

我通过这种方式找到了解决办法:

代码语言:javascript
复制
    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;

代码语言:javascript
复制
    et.setTextSize(TypedValue.COMPLEX_UNIT_SP, sp);

我测试了几个屏幕的大小(大约10个),并工作在所有(肖像和景观在其中大多数)。

对于所有行,我使用相同的text_len (最长),因为我希望所有行的文本大小相同。

2022年8月19日更新:

今天,我将我的华为更新为EMUI 12.0.0,我需要补充如下:

代码语言:javascript
复制
    // For EMUI 12.0.0
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)    
    {
        sp--;
    }

在此之前

代码语言:javascript
复制
    et.setTextSize(TypedValue.COMPLEX_UNIT_SP, sp);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73350367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档