如何在自定义形状xml中添加图像

Lib*_*hos 1 xml android android-ui android-layout

我正在编写XML选择器

<?xml version="1.0" encoding="utf-8"?>
   <selector xmlns:android="http://schemas.android.com/apk/res/android" >
   <item android:drawable="@drawable/image_state2" android:state_pressed="true"/>
   <item android:drawable="@drawable/image_state1"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

我只是希望state1是透明的.所以图像被视为 - 是

状态1

   <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<gradient
    android:angle="270"
    android:endColor="#00000000"
    android:startColor="#00000000" />
Run Code Online (Sandbox Code Playgroud)

现在我想让state2对我已经完成的一些阴影进行着色.我的问题是,除了阴影渐变,我想在中心出现一个图标.我不知道如何通过xml添加它

状态2

   <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<gradient
    android:angle="270"
    android:endColor="#80000000"
    android:startColor="#80000000" />
Run Code Online (Sandbox Code Playgroud)

vip*_*tal 8

你可以通过使用layer-list来做到这一点:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
 <item>
  <shape android:shape="rectangle" >
      <gradient
    android:angle="270"
    android:endColor="#80000000"
    android:startColor="#80000000" />
  </shape>
 </item>
 <item>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/background"
android:tileMode="repeat" android:gravity="center" />
 </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

将上面保存为@ drawable/image_state2.

有关更多信息: 在可绘制图层列表中调整位图大小