与底部中风的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>