Androidのアプリ開発関連のブログ

TextViewの高さ

制作中のSSHクライアントで画面に横方向と縦方向に何文字表示できるか測っているのだが、
レイアウトの構造は、「 ScrollView > LinearLayout > TextView 」で1行毎にTextViewが入る。
LinearLayout はmatch_parentしても高さがないようなので、全体の高さはScrollView.getHeight()で取得。
TextView.getLineHeight()で文字の高さを取得して全体の高さを割って行数を取得していた。
paddingとmarginは指定無し。

で、なんかズレているような・・・
というわけで計算値の出力と画像の解析をしたのだが、
TextView.getLineHeight()は13になるのだが、画像解析では15px程のような・・・

さらに調査してみたが、LinearLayout.getHeight()は15pxになる!
LinearLayoutに考慮してない余白か何かがあるのかと思ったが発見できず、
TextViewの方は挿入してないのでgetHeight()は0になる状態だったのだが、挿入済みのTextViewを取得してgetHeight()してみたら15になった!

TextViewの高さが予定と違っていることが確定したが、
getLineSpacingExtra() は0。
getLineSpacingMultiplier() は1.0。
getLineHeight() は13なので、Viewの高さも13になるものと思っていたのだが、謎の余白が入るんだね。
試しにpaddingとmarginを0pxに指定してやってもViewの高さは変わらず15。


というわけで、この問題は挿入済みのTextViewからgetHeight()して高さを取得することにする。