Android EditText 的自定义形状

Android Custom shape for EditText

我正在尝试为 EditText 创建自定义设计。请参阅下面的附图,

我正在尝试使用如下定义的自定义形状来实现此目的。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/places_ic_search"
        android:width="30dp">
        <shape
            android:shape="rectangle"></shape>
    </item>

    <item
        android:left="30dp"
        android:drawable="@color/white">
        <shape android:shape="rectangle" >
            <gradient android:startColor="#000000" android:endColor="#FFFFFF" android:angle="90"/>
        </shape>
    </item>

</layer-list>

但是没有显示搜索图标。我怎样才能做到这一点?

谢谢。

我通过微小的阳光应用了答案,编辑框看起来像这样,搜索图标没有左对齐。

我编辑我的答案。编辑 Shape.xml 如下:

Shape.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle" >
            <stroke android:width="5dp" android:color="#FF0000" />
        </shape>
    </item>

    <item
        android:left="3dp"
        android:right="3dp"
        android:top="3dp"
        android:bottom="3dp"
        >
        <shape android:shape="rectangle" >
            <stroke android:width="1dp" android:color="#FF0000" />\
            <solid android:color="#FFFFFF" />
            <corners android:radius="3dp" />
        </shape>
    </item>

    <item android:gravity="left" android:left="10dp">
        <bitmap android:src="@android:drawable/ic_menu_search" android:gravity="left">

        </bitmap>
    </item>
</layer-list>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" >
            <gradient android:startColor="#FFFFFF" android:endColor="#FFFFFF" android:angle="90"/>
            <corners android:radius="3dp"></corners>
        </shape>
    </item>
    <item android:drawable="@drawable/places_ic_search"
          android:gravity="center_vertical|left"
          android:height="10dp"
          android:width="30dp">
    </item>
</layer-list>

我会这样做:

  1. 对于边框部分,您可以像以前一样使用可绘制对象来完成
  2. 对于搜索图标,与其尝试将其放在可绘制文件中,不如在您的EditText xml布局中设置它,使用android:drawableLeft,然后您可以设置使用 android:paddingLeftandroid:drawablePadding
  3. 填充