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>
188124 次浏览

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

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

enter image description here

<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>

有点像黑客,但我觉得这可能是最好的方法。无论高度如何,虚线总是在底部。

<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>

说明:

第二个形状是带虚线轮廓的透明矩形。使边界只出现在底部的关键在于设置另一边的负边距。这些负边距将虚线“推”到绘制区域的两侧,只留下沿着底部的线。一个潜在的副作用(我还没有尝试过)是,对于那些画在自己边界之外的视图,负边距边界可能会变得可见。

<?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>

这个有用。

<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>

一个简单的解决办法:

在可绘制文件夹中创建一个 Edit text _ 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>

在布局文件中,将可绘制内容添加到编辑文本中,如下所示

Android: draablebottom = “@draable/edit text _ Stroke”

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

这个答案是为那些谷歌搜索谁想显示虚线底部边界的 EditText喜欢这里

sample

drawable文件夹中创建 dotted.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属性设置为我们刚刚创建的 dotted.xml

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

尝试下一个 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>

我觉得这很简单,没有所有这些负面的填充物或鹳。

<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>

通常用于类似的任务——我创建了图层列表,如下图所示:

<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 绘制另一个矩形,但是应用 bottomPaddings。总是有用的。

但是,当我需要 ButtonColor 是透明的时候,我不能使用上面的绘图工具。我又找到一个办法

<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 只是一个用 white Solid 绘制的简单矩形)

它是具有透明背景的完全透明的 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>

使用这个 xml 根据您的选择改变颜色。

<item>
<layer-list>
<item>
<shape>
<solid android:color="@color/gray_500" />


</shape>
</item>
<!-- CONTENT LAYER -->
<item android:bottom="2dp" >
<shape>
<solid android:color="#ffffff" />
</shape>
</item>
</layer-list>
</item>

如果需要以编程方式使用

public static Drawable getStorkLineDrawable(@ColorInt int colorStrok, int    iSize, int left, int top, int right, int bottom)


{
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setShape(GradientDrawable.RECTANGLE);
gradientDrawable.setStroke(iSize, colorStrok);
LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{gradientDrawable});
layerDrawable.setLayerInset(0, left, top, right, bottom);
return layerDrawable;
}

调用此方法,如

  Drawable yourLineDrawable=  getStorkLineDrawable(yourColor, iSize, -iSize, -iSize, -iSize, 0);

这对我来说效果最好:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="-5dp" android:left="-5dp" android:right="-5dp" android:bottom="0dp">
<shape android:shape="rectangle">
<stroke android:width="4dp" android:color="#ff0000"/>
</shape>
</item>
</layer-list>

只显示底部的线条。您可以很容易地改变笔划宽度的大小,您喜欢,也更新顶部,左,右对相应的。

一个简单的解决办法 :

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="-1dp"
android:left="-1dp"
android:right="-1dp"
android:top="-1dp">


<shape android:shape="rectangle">


<solid android:color="#AARRGGBB" />


<stroke
android:width="5dp"
android:color="@android:color/red"
android:dashWidth="10dp"
android:dashGap="12dp" />


</shape>
</item>
</layer-list>

最后我们有了这样的东西:)

enter image description here

最简单的方法,这是把后面的看法,你想底部边界

    <?xml version="1.0" encoding="utf-8"?>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/colorPrimary" />

简单地加上-

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--Minus (-) how much dp you gave in the stroke width from left right top-->
<item android:left="-10dp" android:right="-10dp" android:top="-10dp">
<shape
android:shape="rectangle">
<stroke
android:dashGap="10dp"
android:dashWidth="10dp"
android:width="10dp"
android:color="@android:color/holo_red_dark" />
<!--This is the main background -->
<solid android:color="#FFDDDDDD" />
</shape>
</item>
</layer-list>

预览 -

enter image description here

这是一个带有底部笔画的矩形背景

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="4dp" />
<solid android:color="#f2f4f5" />
<stroke
android:width="3dp"
android:color="#002f34" />
<padding android:bottom="4dp" />
</shape>
</item>
 

<item>
<shape android:shape="rectangle">
<corners android:radius="4dp" />
<solid android:color="#f2f4f5" />
 

</shape>
</item>
</layer-list>