私は、Androidとの奇妙な問題に捕まってしまったが、集中している画像やテキストを持つボタンを作成する方法 - 私はこのようなボタンが欲しい:アンドロイド:両方
|-----------------------------------------------------------------------|
| [icon] <5px> [text text text] |
|-----------------------------------------------------------------------|
とグループを( [アイコン] < 5px> [テキストテキストテキスト])は中央揃えにしてください。アイコンとテキストの間に配置するパディングのプレースホルダとして5pxが使用されていることに注意してください。
バックグラウンドを設定したり私は別の背景を持っているからです)、アンドロイド:drawableLeftプロパティを使ってアイコンを設定します。
しかし、setCompoundDrawablesWithIntrinsicBoundsメソッドのドキュメントが少し誤解を招く(see here)のように見えます。それは、イメージが、真でないTEXTの左/右/上/下の面に置かれていることを示します。アイコンは、ボタンの対応する面に配置されます。たとえば、次のアンドロイドの設定
:drawableLeftプロパティは、最も左の位置にアイコンを置き、(重心で)私にこれを取得します。
|-----------------------------------------------------------------------|
| [icon] [text text text] |
|-----------------------------------------------------------------------|
またはこの(LEFT重力で):
|-----------------------------------------------------------------------|
| [icon] [text text text] |
|-----------------------------------------------------------------------|
:
の両方が、私はこのようになります回避策を見つけた地獄:(
として醜いです
public static void applyTextOffset(Button button, int buttonWidth) {
int textWidth = (int) button.getPaint().measureText(button.getText().toString());
int padding = (buttonWidth/2) - ((textWidth/2) + Constants.ICON_WIDTH + Constants.ICON_TO_TEXT_PADDING);
button.setPadding(padding, 0, 0, 0);
button.setCompoundDrawablePadding(-padding);
}
そして、それは多かれ少なかれ動作しますが、私は次のような理由から、私の好みに合わせてそれを見つけることはありませんが:
- それはボタンの幅を知ることが必要です。自動サイズのボタンでは、実際のレイアウトが完了するまで認識されません。レンダリング後に実際の幅を知るためにリスナーを使用することをおすすめしますが、これはコードを非常に複雑にします。
- 私はAndroidのレイアウトエンジンからレイアウトの責任を引き継いだような気がし
が、よりエレガントな解決策ではないですか?
ような何か希望あなたはあなたの問題を解決し – Ishu