ali*_*ali 15 android background button
我知道有类似的帖子,但我找不到任何一个答案.所以,我有这个可绘制的XML:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true">
<bitmap
android:src="@drawable/bm_btn_background"
android:tileMode="repeat"
android:gravity="center" />
</item>
<item android:state_enabled="true">
<shape android:shape="rectangle">
<gradient
android:startColor="#a0e0b071"
android:endColor="#a0a67637"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#5c3708" />
<corners
android:radius="5dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="#a0a67637"
android:endColor="#a0e0b071"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#5c3708" />
<corners
android:radius="5dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个按钮,其中重复的图像作为背景并应用了渐变.使用此代码我只能看到背景图像,而不是渐变,边框和圆角.此外,当我单击按钮时,它不会更改(渐变应该更改).我不知道这段代码有什么问题?如果我使用图层列表而不是选择器,我会得到所需的结果,但是当我按下按钮时它也不会改变.谢谢你的帮助!
Luk*_*rog 49
您的选择器代码错误,因为:
你有两个元素用于相同的状态,并且选择器遇到它将停在那里state_enabled的Bitmap元素的第一个state(),你的渐变将永远不会出现(为此你应该使用一个layer-list具有项目Bitmap和渐变的项目)
选择器将按顺序匹配状态.的同时,按下Button该state_pressed将永远不会被激活,因为选择器将匹配的第一state_enabled是第一元件(为此,你应该移动的代码用于对state_pressed上述state_enabled元件).
实际上你应该删除它state_enabled并让Bitmap+ gradient成为默认值Button.贝娄是你的选择器(我假设你只想改变图像上的渐变(但是图像应该出现在按下状态,如果这不是想要的行为,只留下渐变state_pressed)):
<?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>
<bitmap android:gravity="center" android:src="@drawable/bm_btn_background" android:tileMode="repeat" />
</item>
<item>
<shape>
<gradient android:angle="270" android:endColor="#a0e0b071" android:startColor="#a0a67637" />
<stroke android:width="1dp" 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>
<bitmap android:gravity="center" android:src="@drawable/bm_btn_background" android:tileMode="repeat" />
</item>
<item>
<shape android:shape="rectangle">
<gradient android:angle="270" android:endColor="#a0a67637" android:startColor="#a0e0b071" />
<stroke android:width="1dp" 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41540 次 |
| 最近记录: |