6

9パッチ画像を背景として使用する場合、パディングは常に9パッチ画像から派生しているように見えます。9パッチイメージでパディングバーを使用しない場合でも、ドローアブルを使用します。

パディングラインが含まれていない場合、Androidは左と上のラインを使用してこの描画可能領域を定義します。

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

ただし、android:padding =0dpまたは=Xdpを使用して、XMLでオーバーライドできます。残念ながら、android:paddingLeft=Xdpの使用は機能しません。だからあなたは均一なパディングで立ち往生しています。私はこれをやってみました:

  android:padding="2dp"
  android:paddingLeft="20dp"

左側のパディングには影響しませんでした。それらをstyles.xmlに配置すると、同様の結果が得られました。

これを回避するために私が見た唯一のハックは、コードにパディングを設定することでした。

4

1 に答える 1

7

if(android:padding present)それは他のすべてのパディング値をオーバーライドしますelse if(android:paddingXXX present)それはbg drawable paddingXXX(XXX = Left | Right | Top | Bottom)をオーバーライドしますelse if(view has drawable bg)padding values from this drawable (あなたの場合は9パッチ)が使用されます。それ以外の場合はデフォルトのパディングが適用されます(通常はゼロ)

したがって、android:padding="2dp"は使用しないでください。paddingプロパティはすべてをオーバーライドします。paddingLeft = 20dp、paddingTop = 2dp、paddingRight = 2dp、paddingBottom=2dpを使用するだけです。

または、paddingLeft = 20dpに設定すると、他のパディング値はbgdrawableから取得されます。

于 2012-12-30T23:13:33.853 に答える