与底部中风的Android形状

我需要创build一个android形状,以便只有底部有中风(虚线)。 当我尝试以下时,笔画将中心的形状一分为二。 有谁知道如何去正确的? 笔画需要是底线/边框。 我正在使用该形状作为TextView的背景。 请不要紧,为什么我需要它。

<?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="#1bd4f6" /> </shape> </item> <item> <shape android:shape="line" > <padding android:bottom="1dp" /> <stroke android:dashGap="10px" android:dashWidth="10px" android:width="1dp" android:color="#ababb2" /> </shape> </item> </layer-list> 

这是一种黑客,但我认为这可能是最好的办法。 虚线总是在底部,不pipe高度如何。

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" > <solid android:color="#1bd4f6" /> </shape> </item> <item android:top="-2dp" android:right="-2dp" android:left="-2dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:dashGap="10px" android:dashWidth="10px" android:width="1dp" android:color="#ababb2" /> </shape> </item> </layer-list> 

说明:

第二个形状是带有虚线轮廓的透明矩形。 使边界只出现在底部的关键在于在另一边的负边缘。 这些负边缘在这些边上的拉伸区域之外“推”出虚线,仅留下沿着底边的线。 一个潜在的副作用(我没有尝试过)是,对于超出自身范围的观点,负边缘边界可能变得可见。

这是诀窍…

 <item > <shape android:shape="rectangle"> <solid android:color="#YOUR_BOTTOM_LINE_COLOR"/> </shape> </item> <item android:bottom="1.5dp"> <shape android:shape="rectangle"> <solid android:color="#YOUR_BG_COLOR"/> </shape> </item> 
 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="-6dp" android:left="-6dp" android:right="-6dp" android:bottom="0dp"> <shape android:shape="rectangle"> <solid android:color="#88FFFF00"/> <stroke android:width="5dp" android:color="#FF000000"/> </shape> </item> </layer-list> 

这个答案适用于那些想要像这里显示EditText底部边框的Googlesearch者

样品

drawable文件夹中创builddotted.xml并粘贴这些文件

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="1dp" android:left="-2dp" android:right="-2dp" android:top="-2dp"> <shape android:shape="rectangle"> <stroke android:width="0.5dp" android:color="@android:color/black" /> <solid android:color="#ffffff" /> <stroke android:width="1dp" android:color="#030310" android:dashGap="5dp" android:dashWidth="5dp" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /> </shape> </item> </layer-list> 

然后,只需将android:background属性设置为我们刚刚创build的dotted.xml 。 你的EditText看起来像这样。

 <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Some Text" android:background="@drawable/dotted" /> 

如果我了解你,我认为你不需要使用形状。

如果您正在查看如下图所示,然后使用以下布局。

在这里输入图像描述

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:background="#1bd4f6" android:paddingBottom="4dp" > <TextView android:layout_width="200dp" android:layout_height="wrap_content" android:background="#ababb2" android:padding="5dp" android:text="Hello Android" /> </RelativeLayout> </RelativeLayout> 

编辑

玩这些属性,你会得到结果

  android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" 

试试这个

 <?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="#1bd4f6" /> </shape> </item> <item android:top="20px" android:left="0px"> <shape android:shape="line" > <padding android:bottom="1dp" /> <stroke android:dashGap="10px" android:dashWidth="10px" android:width="1dp" android:color="#ababb2" /> </shape> </item> </layer-list> 

简单的解决scheme:

在drawable文件夹中创build一个drawable文件作为edittext_stroke.xml 。 添加下面的代码:

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line" > <stroke android:width="1dp" android:color="@android:color/white" > </stroke> </shape> 

在布局文件中,添加drawable来编辑文本

机器人:drawableBottom = “@绘制/ edittext_stroke”

 <EditText android:textColor="@android:color/white" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableBottom="@drawable/edittext_stroke" /> 

我觉得这很简单,没有负面的填料或鹳。

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/main_bg_color"/> <item android:gravity="bottom"> <shape android:shape="rectangle"> <size android:height="5dp"/> <solid android:color="@color/bottom_bar_color"/> </shape> </item> </layer-list> 

通常对于类似的任务 – 我创build了像这样的可绘制的层列表:

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/underlineColor"/> </shape> </item> <item android:bottom="3dp"> <shape android:shape="rectangle"> <solid android:color="@color/buttonColor"/> </shape> </item> 

这个想法是,首先你用underlineColor绘制矩形,然后在这个矩形的顶部用实际的buttonColor绘制另一个矩形,但应用bottomPadding。 它总是工作。

但是当我需要让buttonColor透明时,我不能使用上面的drawable。 我发现了另一个解决scheme

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@android:color/transparent"/> </shape> </item> <item android:drawable="@drawable/white_box" android:gravity="bottom" android:height="2dp"/> </layer-list> 

(你可以在这里看到mainButtonColor是透明的,而white_box只是一个简单的矩形,可以用白色的Solid来绘制)

尝试下一个XML可绘制的代码:

  <layer-list> <item android:top="-2dp" android:right="-2dp" android:left="-2dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="#fff" /> </shape> </item> </layer-list> 

它是透明背景的完全透明的Edittext。

 <item> <shape android:shape="rectangle" > <solid android:color="@color/transparent" /> </shape> </item> <item android:top="-3dp" android:right="-3dp" android:left="-3dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="2dp" android:color="@color/bottomline" /> </shape> </item>