在TextView中设置文本的上升,下降,基线

在TextView中设置文本的上升,下降,基线

问题描述:

我需要两个TextView来具有相同的基线,上升,下降,下降值。文本被绘制后,是否可以更改TextView的FontMetrics?在TextView中设置文本的上升,下降,基线

+0

你检查'TextView'文档?有什么与“大小”有关吗? – pskink

+0

@pskink我没有检查。没有任何与此相关的公开API。但getPaint()提供了fontmetrics的值。我想知道是否可以在绘画对象内改变它。 – Siva

+0

与'TextView' api中的大小没有关系? – pskink

这么晚了,但我也遇到了这个问题,我解决了一些窍门。 (just modify baseline,没有上升,下降或东西)


  1. 注意,fontMetrics' values(上升,下降,底部,顶部)是依赖于textSize

    所以我们必须在view is drawn之后使用fontMetrics' values。 (如果它是自动调整大小或东西)

    做某事视图绘制之后,使用Sa Qada's answer

  2. baseline is always 0.下降,上升,顶部,底部是相对值。

    请参阅此Suragch's answer

  3. 更改fontMetrics的值不影响UI。

    设置自定义基线(文本视图的文本位置),只需使用填充。下面的代码中的 与两个TextView的基线对齐。

    // this is kotlin code, but I'm sure you can understand 
    // align textview2 to textview1's baseline 
    
    val tv1Baseline = tv1.paddingBottom + tv1.paint.fontMetrics.bottom 
    val tv2Baseline = tv2.paddingBottom + tv2.paint.fontMetrics.bottom 
    val newPaddingOffset = tv1Baseline - tv2Baseline 
    
    tv2.setPadding(tv2.paddingLeft, tv2.paddingTop, tv2.paddingRight, 
           tv2.paddingBottom + newPaddingOffset) 
    
+0

感谢您的回答,非常感谢。我会试试这个。 – Siva

+0

@Siva,但这可能不是一个好主意。因为你必须考虑文本的对齐情况。 –