0

アプリでカスタマイズしようとしToggleButtonています。ここに書かれているように、9パッチ画像を背景として設定しています。そして、私のレイアウトxmlで:

<ToggleButton
    android:id="@+id/toggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/btn_toggle_bg"
    android:checked="true"
    android:gravity="center_horizontal|center_vertical" />

btn_toogle_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+android:id/background"
        android:drawable="@android:color/transparent"/>
    <item
        android:id="@+android:id/toggle"
        android:drawable="@drawable/btn_toggle"/>
</layer-list>

btn_toggle.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_toggle_off" android:state_checked="false"/>
    <item android:drawable="@drawable/btn_toggle_on" android:state_checked="true"/>
</selector>

9-パッチは次のようになります(btn_toggle_off):

btn_toggle_off

チェック状態の同じ画像。

しかし、これを背景として適用すると、予期しない上下のパディングが発生します。

ここに画像の説明を入力してくださいここに画像の説明を入力してください

Buttonこの背景を背景に適用したり、xml-drawableを背景として使用したりしても、同じ結果が得られます。予期しないパディングを回避する方法は?助けてください。


アップデート:

また、このスタイルをアプリテーマに追加すると、パディングはありませんが、クリックできなくToggleButtonなります(状態は変更されません)。

styles.xml

<style name="Widget.Button.Toggle" parent="android:Widget">
    <item name="android:background">@drawable/btn_toggle_bg</item>
    <item name="android:disabledAlpha">?android:attr/disabledAlpha</item>
</style>

themes.xml

<style name="MyThemeName" parent="@android:Theme.Black">
    <item name="android:buttonStyleToggle">@style/Widget.Button.Toggle</item>
</style>
4

2 に答える 2

1

android:Widget.Button.Toggleスタイルを拡張する必要があるようです:

<style name="Widget.Button.Toggle" parent="android:Widget.Button.Toggle">
    <item name="android:background">@drawable/btn_toggle_bg</item>
    <item name="android:disabledAlpha">?android:attr/disabledAlpha</item>
</style>
于 2013-03-24T14:23:43.330 に答える
0

パディングの理由は、コンテンツを配置する場所を表す右の黒いピクセルであり、画像の上から下までの全長である必要があります。

これを試して:

ここに画像の説明を入力してください

于 2013-03-24T14:13:17.093 に答える