gpt4 book ai didi

带有背景图像和渐变的 Android 选择器

转载 作者:IT老高 更新时间:2023-10-28 23:38:00 26 4
gpt4 key购买 nike

我知道有与此类似的帖子,但我无法在其中任何一个帖子中找到我的答案。所以,我有这个可绘制的 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>

我正在尝试创建一个以重复图像作为背景并应用渐变的按钮。使用此代码,我只能看到背景图像,而不是渐变、边框和圆角。此外,当我单击按钮时,它不会改变(渐变应该会改变)。不知道这段代码有什么问题?如果我使用图层列表而不是选择器,我会得到想要的结果,但是当我按下按钮时它也不会改变。感谢您的帮助!

最佳答案

您的选择器代码错误,因为:

  • 您有两个元素针对同一状态,而选择器遇到了 bitmap 元素的第一个状态( state_enabled ),它将停止在此处,而您的渐变永远不会出现(为此,您应该使用 layer-list,其中包含 Bitmap 和顶部的渐变项)

  • 选择器会按顺序匹配状态。当您按下 Button 时,state_pressed 将永远不会被激活,因为选择器将首先匹配第一个元素上的 state_enabled(为此,您应该将 state_pressed 的代码移到 state_enabled 元素之上)。

实际上你应该只删除 state_enabled 并让 Bitmap + gradient 成为 Button 。 Bellow 是您的选择器(我假设您只想更改图像上的渐变(但图像即使在按下状态下也应该出现,如果这不是想要的行为,只留下 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>

关于带有背景图像和渐变的 Android 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10449311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com