2016-08-16 76 views
0

我需要兩個TextView來具有相同的基線,上升,下降,下降值。文本被繪製後,是否可以更改TextView的FontMetrics?在TextView中設置文本的上升,下降,基線

+0

你檢查'TextView'文檔?有什麼與「大小」有關嗎? – pskink

+0

@pskink我沒有檢查。沒有任何與此相關的公開API。但getPaint()提供了fontmetrics的值。我想知道是否可以在繪畫對象內改變它。 – Siva

+0

與'TextView' api中的大小沒有關係? – pskink

回答

1

這麼晚了,但我也遇到了這個問題,我解決了一些竅門。 (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,但這可能不是一個好主意。因爲你必須考慮文本的對齊情況。 –

相關問題