如何在可绘制的背景中添加填充?

时间:2017-12-29 18:29:38

标签: android xml android-drawable

我正在尝试为应用程序创建自定义的EditText背景,并且我在格式化它时遇到了一些困难。我希望EditText字段带下划线,所以我在这里有这个代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:left="-3dp"
        android:right="-3dp"
        android:top="-3dp">
        <shape android:shape="rectangle">
            <stroke
                android:width="2dp"
                android:color="@color/colorAccent" />
            <solid
                android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

我遇到的问题是,看起来背景不能超出View对象的范围,所以如果我想让下划线进一步低于EditText,我必须向View本身添加填充:

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/edittext_default_dark"
    android:paddingBottom="3dp"
    android:paddingTop="3dp"/>

如果我想改变背景,我真的不喜欢改变几十个EditText小部件的想法,所以我想知道是否有办法在drawable资源中添加填充?

1 个答案:

答案 0 :(得分:0)

我认为您无法凭一己之力实现这一目标。我使用Vector Drawable来解决类似问题。它们似乎在按钮下正确伸展,可以代替可绘制图形使用。您可以在svg(Adobe Illustrator)中绘制此类矢量。然后转换为Android Vector。并调整代码。

示例:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="200dp"
    android:height="40dp"
    android:viewportWidth="200"
    android:viewportHeight="40">

    <path
        android:strokeColor="#FFFFFFFF"
        android:strokeWidth="1"
        android:strokeMiterLimit="10"
        android:pathData="M 16 40 L 184 40" />
</vector>