2012-12-30 9 views
6

9パッチイメージをバックグラウンドとして使用する場合、パディングは常に9パッチイメージから得られるようです。 9パッチ画像でパディングバーを使用しない場合でも、ドロウアブルを使用します。Android 9パッチのパッディングを片方のXMLで無効にする

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

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

は、しかし、あなたは、Androidを使用してXMLでそれを上書きすることができます。 残念ながら、android:paddingLeft = Xdpは使用できません。だから、あなたは一様な詰め物に悩まされています。 私はこれをやってみました:

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

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

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

答えて

7

場合、それはBG描画可能paddingXXX(XXX =左下|右| |トップ)よりも優先されますビューが描画可能BGを持っている(場合は、他の を::(paddingXXXが提示アンドロイド)があれば、それは他のすべてのパディング値他 を上書きします(アンドロイドパディングを提示) )あなたのケースでは9パッチ)のパディング値が使用されます。 デフォルトのパディングが適用されます(通常は0)

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

またはpaddingLeft = 20dpに設定できます。その他のパディング値はbgドロワブルから取得されます。

+2

ありがとうございました。設定スタイルはCSSのように機能すると思いました。これは問題を解決しました。 問題の鉛ですが、私がview.setBackgroundResource(9patch_background)を使用する場合は、 9patch_backgroundは、XMLでパディングをオーバーライドせずに背景を設定する方法です。 – pt123

+1

パディング値を取得し、背景を設定し、古いパディング値を元に戻す必要があります。 – Leonidos

関連する問題