2016-08-16 27 views
0

2つの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. change fontMetrics 'の値はUIに影響しません。

    カスタムベースライン(テキストビューのテキスト位置)を設定するには、単にパディングを使用します。コード下の は、2つの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

@シヴァしかし、これは本当に良い考えではないかもしれません。大文字と小文字の区別が必要です。 –

関連する問題