我在正常状态下有一个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>
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>
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>
答案 0 :(得分: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" />
在drawable文件夹中创建一个选择器xml button_selector.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>
可绘制文件夹中的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>
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>
这应该可行。试试吧