【问题标题】:Change Padding in Selector drawable更改 Selector drawable 中的填充
【发布时间】:2013-04-26 09:14:56
【问题描述】:

我正在尝试从自定义可绘制资源中的按钮更改填充,并在选择器中重用它。 更改可绘制对象似乎不是问题,但应用程序始终使用不同可绘制对象的最高填充:

button_inactive.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item>
    <shape android:shape="rectangle" >
        <solid android:color="#FF4d681f" />
    </shape>
</item>
<item
    android:bottom="2dp"
    android:left="2dp"
    android:right="2dp"
    android:top="2dp">
    <shape android:shape="rectangle" >
        <solid android:color="#FFFFFFFF" />

        <padding
            android:bottom="5dp"
            android:top="5dp" />
    </shape>
</item>

button_active.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <shape android:shape="rectangle" >
        <solid android:color="#FF4D681F" />
    </shape>
</item>
<item
    android:bottom="2dp"
    android:left="2dp"
    android:right="2dp"
    android:top="2dp">
    <shape android:shape="rectangle" >
        <solid android:color="#FF8da32d" />

        <padding
            android:bottom="10dp"
            android:top="10dp" />
    </shape>
</item>

button_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/button_active"/>
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/button_active"/>
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/button_active"/>
<item android:drawable="@drawable/button_inactive"/>

问题是我的 Button 在所有状态下都使用 10dp 填充,包括“非活动”状态。

是否有解决方案让它只使用 XML 或者最好以编程方式制作自定义按钮?

【问题讨论】:

  • 我用我的一个可绘制按钮试了一下。普通的没有填充,我在按下的那个上添加了填充。即使显示正常的,它也使用按下的填充。我以同样的方式使用的 .png 文件也有问题。我把压制的比普通的大,但大小没有改变。这很糟糕。

标签: android selector drawable padding


【解决方案1】:

试试这个

<solid android:color="#ffffff" />

<stroke
    android:width="2dp"
    android:color="@android:color/black" />

<padding
    android:bottom="10dp"
    android:left="10dp"
    android:right="10dp"
    android:top="10dp" />

<corners
    android:bottomLeftRadius="6dp"
    android:bottomRightRadius="6dp"
    android:topLeftRadius="6dp"
    android:topRightRadius="6dp" />

【讨论】:

    【解决方案2】:

    android:variablePadding="true" 属性添加到您的选择器。

    我不确定当您使用 layer-list 时它是如何(以及是否)工作的,但是我决定无论如何都将它分享给任何寻找答案的人(就像我一样)。

    【讨论】:

    • android:variablePadding 是错误的属性,从来没有工作过。
    猜你喜欢
    • 2013-03-14
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多