Android:项目drawable

时间:2016-02-03 10:29:15

标签: android

我想实现这种风格

image1

正如你所看到的,我的背景应用程序是一个纹理,所以我需要一个透明的背景,并在视图的底部只有几个像素的渐变颜色。

我只是用它来描述我的EditText背景

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">>
     <item
         android:gravity="bottom"
         android:height="2dp"
         android:drawable="@drawable/my_gradient">
     </item> 
</layer-list>

它适用于Android 6.0和Android M Preview,但不适用于#34;旧版本&#34;作为Android 5.1.1

API 23和22(M)与API 22及更早的渲染 image2

我无法理解为什么我的引力属性没有被应用

1 个答案:

答案 0 :(得分:1)

似乎LayerDrawable个孩子的重力(和大小)属性是最近的,LayerDrawable.setLayerGravity()表示 在API级别23中添加

编辑:至于解决方案,这是我能想到的:

  • 使用九个补丁作为背景,透明的垂直可扩展部分

  • 将不需要的渐变部分覆盖为另一种形状,与背景颜色相同(显然需要不透明)

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:drawable="@drawable/my_gradient" />
    
        <item android:bottom="2dp">
            <shape>
                <solid android:color="background color" />
            </shape>
        </item>
    </layer-list>
    
  • 使用View保持渐变。根据{{​​1}}在布局中的使用方式,可能也需要添加EditText,例如:

    Framelayout