【问题标题】:How calculate text size to fill Linear Layout width whith text's line in Android?如何计算文本大小以在 Android 中用文本行填充 Linearlayout 宽度?
【发布时间】:2022-08-19 22:58:41
【问题描述】:

我有这个问题:

我想在线性布局中添加几行 TextView 并计算文本大小 用文本填充它。

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

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

我打了几个小时都没有成功。

    标签: java android screen dpi


    【解决方案1】:

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

        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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-01
      • 2021-03-10
      • 2023-04-11
      • 2021-11-15
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多