Android EditText 的自定义可绘制背景
Custom drawable background for Android EditText
我想为 Android 布局中的 EditText
组件创建自定义可绘制背景。这应该包括一个跨越 EditText
整个长度的下边框,以及两端连接的 2 条垂直线,它们占高度的 25%,如下所示:
文本本身将使用 android:gravity="left|center"
,并在 left/top/bottom 上留出少量边距。
我已经能够在其他输入文本元素上创建自定义边框,希望使用如下形状包含所有边框:
<?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/transparent"/>
<corners
android:bottomRightRadius="4dp"
android:bottomLeftRadius="4dp"
android:topLeftRadius="4dp"
android:topRightRadius="4dp"/>
<stroke
android:color="@color/lightgrey"
android:width="1dp"/>
</shape>
但是,现在我不想要一个完整的矩形,只需要 1 个完整边 + 2 个部分边。
实现该目标的两个步骤:
- 通过使用
android:left|right|top
. 添加负插图移除顶部、右侧和左侧边框,仅保留底部边框
- 为边项添加新的矩形:调整left/right相关重力,并将高度限制到你想要的大小(这里设置为8dp):
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Bottom border -->
<item
android:left="-50dp"
android:right="-50dp"
android:top="-50dp">
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="@color/lightgrey" />
</shape>
</item>
<!-- Left border -->
<item
android:height="8dp"
android:gravity="left|bottom">
<shape android:shape="rectangle">
<solid android:color="@color/lightgrey" />
<size android:width="1dp" />
</shape>
</item>
<!-- Right border -->
<item
android:height="8dp"
android:gravity="right|bottom">
<shape android:shape="rectangle">
<solid android:color="@color/lightgrey" />
<size android:width="1dp" />
</shape>
</item>
</layer-list>
这是结果
我想为 Android 布局中的 EditText
组件创建自定义可绘制背景。这应该包括一个跨越 EditText
整个长度的下边框,以及两端连接的 2 条垂直线,它们占高度的 25%,如下所示:
文本本身将使用 android:gravity="left|center"
,并在 left/top/bottom 上留出少量边距。
我已经能够在其他输入文本元素上创建自定义边框,希望使用如下形状包含所有边框:
<?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/transparent"/>
<corners
android:bottomRightRadius="4dp"
android:bottomLeftRadius="4dp"
android:topLeftRadius="4dp"
android:topRightRadius="4dp"/>
<stroke
android:color="@color/lightgrey"
android:width="1dp"/>
</shape>
但是,现在我不想要一个完整的矩形,只需要 1 个完整边 + 2 个部分边。
实现该目标的两个步骤:
- 通过使用
android:left|right|top
. 添加负插图移除顶部、右侧和左侧边框,仅保留底部边框
- 为边项添加新的矩形:调整left/right相关重力,并将高度限制到你想要的大小(这里设置为8dp):
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Bottom border -->
<item
android:left="-50dp"
android:right="-50dp"
android:top="-50dp">
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="@color/lightgrey" />
</shape>
</item>
<!-- Left border -->
<item
android:height="8dp"
android:gravity="left|bottom">
<shape android:shape="rectangle">
<solid android:color="@color/lightgrey" />
<size android:width="1dp" />
</shape>
</item>
<!-- Right border -->
<item
android:height="8dp"
android:gravity="right|bottom">
<shape android:shape="rectangle">
<solid android:color="@color/lightgrey" />
<size android:width="1dp" />
</shape>
</item>
</layer-list>
这是结果