Android选择器与背景图像和渐变

我知道有相似的post,但我找不到任何一个答案。 所以,我有这个可绘制的XML:

                     

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

  • 选择时,Android radiobutton背景样式
  • 运行并行AsyncTask
  • ImageView.setBackgroundResource和ImageView.setImageResource有什么区别?
  • windowBackground与活动风格的背景有什么区别?
  • 在不停止app underneith的情况下绘制和挂钩客户
  • 具有清晰背景的DialogFragment(不变暗)
  • Android OpenGL ES透明背景
  • 跨多种活动的Android全面防故障音乐服务
  • 您的选择器代码错误,因为:

    • 你有两个元素用于相同的状态,并且当选择器遇到Bitmap元素的第一个状态( state_enabled )时它将停在那里并且你的渐变将永远不会出现(为此你应该使用一个包含Bitmap作为项目的layer-list顶部的渐变)

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

    实际上你应该删除state_enabled并让Bitmap + gradient成为Button的默认值。 贝娄是你的选择器(我假设你只想改变图像上的渐变(但是图像应该出现在按下状态,如果这不是想要的行为,只留下state_pressed的渐变)):

     < ?xml version="1.0" encoding="utf-8"?>                                 

    看一下你所处的状态

     < ?xml version="1.0" encoding="utf-8"?>            

    要将背景重复为图像,您只需创建9个俯仰图像。

    在我的情况下,我正在使用这个。 尝试一下

                             

    我使用photoshopcanvas大小选项在图像的右侧添加了额外的transperent空间,它对我来说很好。 下载下面的图像以查看演示。 在此处输入图像描述