web-dev-qa-db-ja.com

TextViewのテキストをそのdrawableLeft画像に対して垂直に中央揃え

私はこのコンポーネントを持っています:

<TextView
    Android:id="@+id/item_name"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:drawableLeft="@drawable/icon" />

DrawableLeft属性の画像はテキストのフォントよりも大きいので、画像に対してテキストを垂直方向の中央に配置します。どうすればこの効果を得ることができますか?

45
user940016

「重力」が必要であることに注意してください。これは、レイアウトの重力と混同しないでください。レイアウトの重力はテキストビュー全体を移動し、重力はテキストビュー内のテキストを移動します。

<TextView
    Android:id="@+id/item_name"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:drawableStart="@drawable/icon"
    Android:gravity="center_vertical" />
101
Martin Sykes

重力を設定することに加えて、これは、テキストビューの上部と下部のパディングを減らすことにより、状況によっては整列に役立ちます。

Android:includeFontPadding="false"
57
Learn OpenGL ES

テキストのアクセントが気にならない場合は、Android:includeFontPadding="false"。これにより、TextViewの余分な上下のパディングが削除されます。についてAndroid:gravity="center_vertical"、私のコードには影響しません。

3
shengming

DrawableTextViewの両方をRelativeLayout内に配置し、TextViewlayout_alignBaseline 属性を使用する必要があります。

また、Drawableの向きとlayout_height="wrap_content"を使用してTextView内にLinearLayouthorizontalの2つの項目のみを配置し、TextViewlayout_gravity="center_vertical"を使用することもできます。

0
Ovidiu Latcu