Android可绘制的背景和左侧的渐变

pix*_*xel 5 android gradient shape drawable

W想要drawable在左边有一个背景和渐变的10dp宽度.

我想要实现的形象:

在此输入图像描述

  1. 左边的红色渐变
  2. 其余的背景

我怎么能做到这一点?

我试过layer-list两种形状,但没有运气.

物品背景:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/background" />
    <item android:drawable="@drawable/gradient" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)

背景可绘制:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="@color/black" />
</shape>
Run Code Online (Sandbox Code Playgroud)

形状可绘制:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle">
    <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF"
        android:angle="90"/>
       <size android:width="10dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

And*_*ack 8

在drawable文件夹中创建sidecolor(或任何您想要的名称)XML如下:

  <?xml version="1.0" encoding="utf-8"?>
  <layer-list xmlns:android="http://schemas.android.com/apk/res/android">  
    <item android:drawable="@drawable/background" android:bottom="5dp"
        android:top="5dp"  android:left="5dp" android:right="5dp"/>  
    <item android:drawable="@drawable/red" android:bottom="5dp"  android:top="5dp"
        android:left="5dp" android:right="280dp" /> 
  </layer-list> 
Run Code Online (Sandbox Code Playgroud)

然后创建背景XML:

 <?xml version="1.0" encoding="utf-8"?>
   <shape xmlns:android="http://schemas.android.com/apk/res/android"
               android:shape="rectangle">
        <solid android:color="@android:color/black" />    
   </shape>
Run Code Online (Sandbox Code Playgroud)

然后红色XML作为形状:

  <?xml version="1.0" encoding="utf-8"?>
   <shape xmlns:android="http://schemas.android.com/apk/res/android"  
         android:shape="rectangle">       
      <solid android:color="#B22222" /> 
  </shape> 
Run Code Online (Sandbox Code Playgroud)

输出图像:

在此输入图像描述

您还可以将红色XML创建为渐变:

 <?xml version="1.0" encoding="utf-8" ?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android"  
            android:shape="rectangle">
      <gradient android:startColor="#B22222" android:centerColor="#FFFFFF" 
           android:endColor="#B22222" android:angle="0" /> 
     </shape>
Run Code Online (Sandbox Code Playgroud)

输出图像:

在此输入图像描述

更新:

你也可以这样做,将它对齐左边也可以根据需要控制它的大小,

首先创建一个XML并将其称为color.xml,并通过以下方式引用视图:

android:background="@drawable/sidecolor"
Run Code Online (Sandbox Code Playgroud)

sidecolor.xml:

  <?xml version="1.0" encoding="utf-8" ?>    
     <layer-list xmlns:android="http://schemas.android.com/apk/res/android">

   <item>
        <shape android:shape="rectangle">
             <solid android:color="#FF0000" />        
       </shape>    
  </item>

  <item android:left="10dp">
       <shape android:shape="rectangle">
            <solid android:color="#000000" />
       </shape>
  </item>
     </layer-list>
Run Code Online (Sandbox Code Playgroud)

输出图像:

在此输入图像描述

希望能帮助你.