私はこのコンポーネントを持っています:
<TextView
Android:id="@+id/item_name"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:drawableLeft="@drawable/icon" />
DrawableLeft属性の画像はテキストのフォントよりも大きいので、画像に対してテキストを垂直方向の中央に配置します。どうすればこの効果を得ることができますか?
「重力」が必要であることに注意してください。これは、レイアウトの重力と混同しないでください。レイアウトの重力はテキストビュー全体を移動し、重力はテキストビュー内のテキストを移動します。
<TextView
Android:id="@+id/item_name"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:drawableStart="@drawable/icon"
Android:gravity="center_vertical" />
重力を設定することに加えて、これは、テキストビューの上部と下部のパディングを減らすことにより、状況によっては整列に役立ちます。
Android:includeFontPadding="false"
テキストのアクセントが気にならない場合は、Android:includeFontPadding="false"
。これにより、TextView
の余分な上下のパディングが削除されます。についてAndroid:gravity="center_vertical"
、私のコードには影響しません。
Drawable
とTextView
の両方をRelativeLayout
内に配置し、TextView
で layout_alignBaseline
属性を使用する必要があります。
また、Drawable
の向きとlayout_height="wrap_content"
を使用してTextView
内にLinearLayout
とhorizontal
の2つの項目のみを配置し、TextView
でlayout_gravity="center_vertical"
を使用することもできます。