web-dev-qa-db-ja.com

複合ドローアブルを使用してTextViewで実際のテキストパディングを設定する

ListViewArrayAdapterが入力されています。アイテムには、単一のTextViewレイアウトのみを使用します。一部の行に複合ドローアブルを設定したい。

質問:TextViewに含まれる実際のテキストにパディングを設定して、複合ドローアブルにもパディングが適用されないようにする方法はありますか?他の解決策は、テキストの幅をロックすることです。レイアウトにImageViewsを追加する必要がありますか?

前もって感謝します。

21
Gio

この投稿に出くわした誰かが答えを見つけることができるように、私はこれを答えとして投稿しています。

テキストのみにパディングを設定する直接的な方法はありませんが、TextView全体にpositiveパディングを設定し、ドローアブルにnegativeパディングを設定できます。 。

11
Gio

非常に簡単

Android:drawablePadding = "5dp"

方向に応じて自動的にパディングを使用します

45
Ornithopter

Gioの推測を改善します。これはおそらく古いAPI/SDK用です...

TL:DR-適用するだけです Android:drawablePadding 画像とテキストの間の距離を広げます。

説明: Android:drawablePaddingCompoundDrawableと元のViewの間にパディングを適用するようになりました。この場合、テキストを含むTextViewです。

Android:paddingおよび修飾子は、すべての化合物を含むグループ全体に適用されるようになりました。

ネガティブポジティブハックを行うことはもはや機能しないようです。

したがって、ドローアブルの位置(drawableTop/Left/...)に応じて、パディングはドローアブルのすぐ隣、つまり2つの要素の間に反対方向に適用されます。たとえば、左側に配置されたドローアブルにdrawablePadding="10dp"を適用すると、TextViewの左側にpaddingRight="10dp"を使用して個々のImageViewを設定するのと同様の効果があります(少なくともパディングに関して)。

8
leRobot