我想在按钮顶部创建一个黑色笔触按钮。 stackoverflow上有许多类似的问题,但我还想要一件事 - 按下时按钮的颜色应该改变。 我无法使用带有here或here答案的选择器。什么应该是我的按钮背景的xml代码(android:背景)? 在此先感谢:)
我目前的代码,所有方面都有一个统一的击球
<?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="@color/dark_red" />
<stroke
android:width="0.1dp"
android:color="#fff" />
<corners
android:radius="0dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="@color/red"
android:endColor="@color/dark_red"
android:angle="270" />
<stroke
android:width="0.1dp"
android:color="#fff" />
<corners
android:radius="0dp" />
</shape>
</item>
答案 0 :(得分:3)
您可以使用layer-list
来绘制您需要的背景。
您必须为选择器
添加两个背景状态 unpressed_state.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="@android:color/black" />
</shape>
</item>
<item
android:top="5dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/white" />
</shape>
</item>
</layer-list>
和第二个按下状态的相同代码,颜色不同(只需将@android:color/black
改为你需要的)。它将是prssed_state.xml
并且,在创建自己的背景选择器后,您需要的所有内容
button_bg.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pressed_state" android:state_pressed="true" />
<item android:drawable="@drawable/unpressed_state" />
</selector>
现在只需将button_bg放在按钮的android:background
属性中:
android:background="@drawable/button_bg"
答案 1 :(得分:0)
我在最后遵守这对我有用:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"><layer-list>
<item android:bottom="-10dp" android:left="-10dp" android:right="-10dp"><shape>
<gradient android:angle="270" android:endColor="#a0e0b071" android:startColor="#a0a67637" />
<stroke android:width="10dp" android:color="#5c3708" />
<corners android:radius="5dp" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape></item>
</layer-list></item>
<item android:state_enabled="true"><layer-list>
<item android:bottom="-10dp" android:left="-10dp" android:right="-10dp"><shape android:shape="rectangle">
<gradient android:angle="270" android:endColor="#a0a67637" android:startColor="#a0e0b071" />
<stroke android:width="10dp" android:color="#5c3708" />
<corners android:radius="5dp" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape></item>
</layer-list></item>
</selector>