按钮按下状态填充在正常状态下发生

Lit*_*Dev 1 android shape android-button

我在正常状态下有一个3d查看按钮,右侧和底部都有3dp填充,当我按下按钮时,我想让它看起来像这里左边和顶部的3dp填充.但是当我更改项目形状的按下状态的填充值时,即使按钮处于正常状态/未按下,填充中的更改也会显示.

我的按钮看起来像这样:

在此输入图像描述

按下时我也希望它看起来像这样:

在此输入图像描述

btn_gray1.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#acacac" />
            <stroke
                android:width="0dp"
                android:color="#acacac" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
    <item>
        <shape>

            <solid android:color="#c2c2c2"/>
            <stroke
                android:width="0dp"
                android:color="#c2c2c2" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

btn_gray2.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#acacac" />
            <stroke
                android:width="0dp"
                android:color="#acacac" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="0dp"
                android:top="0dp"
                android:right="3dp"
                android:bottom="3dp" />
        </shape>
    </item>
    <item>
        <shape>

            <solid android:color="#959595"/>
            <stroke
                android:width="0dp"
                android:color="#959595" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="0dp"
                android:top="0dp"
                android:right="3dp"
                android:bottom="3dp" />
        </shape>
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

btn_gray.xml

  <?xml version="1.0" encoding="utf-8"?>
    <layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
       <item android:drawable="@drawable/btn_gray2"/>
       <item android:drawable="@drawable/btn_gray1"/>  
    </layer-list>
Run Code Online (Sandbox Code Playgroud)

Man*_*ika 6

这样做吧

xml布局中的按钮

<Button
            android:id="@+id/btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TUTORIAL"
            android:padding="5dp"
            android:textColor="@android:color/white"
            android:background="@drawable/button_selector" />
Run Code Online (Sandbox Code Playgroud)

在drawable文件夹button_selector.xml中创建一个选择器xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
      <item android:drawable="@drawable/button_background_one"
          android:state_pressed="true" />
    <item android:drawable="@drawable/button_backgroun_two" />

</selector>
Run Code Online (Sandbox Code Playgroud)

drawable文件夹中的button_background_one.xml

<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    <shape>
            <solid
                android:color="#959595" />
            <stroke
                android:width="0dp"
                android:color="#959595" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="3dp"
                android:top="3dp"
                android:right="0dp"
                android:bottom="0dp" />
        </shape>
    </item>
    <item>
        <shape>

            <solid android:color="#c2c2c2"/>
            <stroke
                android:width="0dp"
                android:color="#c2c2c2" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="3dp"
                android:top="3dp"
                android:right="0dp"
                android:bottom="0dp" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

drawable文件夹中的button_backgroun_two.xml

<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    <shape>
            <solid
                android:color="#959595" />
            <stroke
                android:width="0dp"
                android:color="#959595" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="0dp"
                android:top="0dp"
                android:right="3dp"
                android:bottom="3dp" />
        </shape>
    </item>
    <item>
        <shape>

            <solid android:color="#c2c2c2"/>
            <stroke
                android:width="0dp"
                android:color="#c2c2c2" />
            <corners
                android:radius="0dp" />
            <padding
                android:left="0dp"
                android:top="0dp"
                android:right="3dp"
                android:bottom="3dp" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

这应该工作.试试吧

  • 这很好用,看起来比我的代码更容易管理!谢谢! (2认同)