【问题标题】:How to get linespacing of a TextView?如何获取 TextView 的行距?
【发布时间】:2014-03-07 07:10:42
【问题描述】:

有什么方法可以在Android 中获得TextView 的行距?我尝试找到PaintfontMetricsTextView 并这样做:

tv1.getPaint().getFontMetrics(pfm);
float fontTop = pfm.top;
float fontBottom = pfm.bottom;
System.out.println("Line Space >> " + (fontBottom - fontTop));

但在我更改TextView 的字体大小之前,结果似乎是相同的。那么如何获得TextView 的行距?

【问题讨论】:

    标签: android textview fontmetrics


    【解决方案1】:

    TextView 的行距是

    textView.getPaint().getFontSpacing() * textView.getLineSpacingMultiplier() + textView.getLineSpacingExtra();
    

    注意 getLineSpacingMultiplier()getLineSpacingExtra() 方法自 API 16+ 起可用。

    【讨论】:

      【解决方案2】:

      getLineSpacingExtra ();获取行距额外空间

      tv1.getLineSpacingExtra ()
      

      textView.setLineSpacing() 或来自 xml 你可以使用android:lineSpacingExtra 来设置额外的空间。

      【讨论】:

        【解决方案3】:
            try {
                Field mSpacingAddField = TextView.class.getDeclaredField("mSpacingAdd");
                Field mSpacingMultField = TextView.class.getDeclaredField("mSpacingMult");
                mSpacingAddField.setAccessible(true);
                mSpacingMultField.setAccessible(true);
                mSpacingAdd = mSpacingAddField.getFloat(textView);
                mSpacingMult = mSpacingMultField.getFloat(textView);
            } catch (Exception e) {
                e.printStackTrace();
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-18
          • 2012-12-29
          • 1970-01-01
          • 2016-11-09
          • 2011-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多