TextviewのgetTextSize()がどのように測定されるかについての言及があるところはどこにも見つかりません。視覚的なテストからは、ディセンダーは含まれていないようですが、アセンダーが含まれているようです。ベースラインから正確に開始しているようにも見えません。
http://en.wikipedia.org/wiki/Descender
これはそれに最も近い言及ですが、GoogleのRomainGuyは質問のその部分を無視しています。
http://www.mail-archive.com/android-developers@googlegroups.com/msg08514.html
複合ドローアブルを使用しているのでこれが必要であり、ドローアブルをさまざまなデバイスのテキストに揃えることができる必要があります。
これは、エッジに接する円を描画可能な複合でテストするために使用したコードです。
tvData.setTextSize(TypedValue.COMPLEX_UNIT_PX, 100);
tvData.setText("agB5ãÂ");
int size = (int)tvData.getTextSize();
Drawable img = getResources().getDrawable(R.drawable.circle_white_full_72 ).mutate();
img.setBounds( 0 , 0 , size , size);
tvData.setCompoundDrawables( null, null, img, null );
これが結果です
ご覧のとおり、ディセンダーとアセンダーは使用されていないようです。
他の人がhttp://i.imgur.com/Yhf8b.pngをテストしたい場合は、これが描画可能な画像です
を使用して画像をテキストサイズの80%に変更する場合
int size = (int)tvData.getTextSize() *80/100;
これが結果で、100%の画像の上に画像が置き換えられています。たぶん、setCompoundrawablesは独自のスケーリングを行っています
フォントとドローアブルの中点を測定してみましたが、オフになっています。これがそれを強調した画像です
最後に、描画可能な50ピクセルを左に移動し、出力を測定しました。setTextSizeが100pxに設定されているため、フォントテキストのベースラインからベースラインまでの高さの半分でした。
Androidは、複合ドローアブルをスケーリングおよび配置するために、他のレイアウトを使用している必要があります。多分私はこれについて別の質問を作成する必要があります。これは、ベースラインからベースラインまでを強調した画像です。