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>
我正在尝试创建一个按钮,其中重复的图像作为背景并应用了渐变.使用此代码我只能看到背景图像,而不是渐变,边框和圆角.此外,当我单击按钮时,它不会更改(渐变应该更改).我不知道这段代码有什么问题?如果我使用图层列表而不是选择器,我会得到所需的结果,但是当我按下按钮时它也不会改变.谢谢你的帮助!
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>
| 归档时间: | 
 | 
| 查看次数: | 41540 次 | 
| 最近记录: |