在LinearLayout上只添加顶部和底部边框

26

我想在我的LinearLayout上只添加底部和顶部边框。我已经尝试过这样做:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:bottom="1dp"
    android:top="1dp">
    <shape android:shape="rectangle">
        <solid android:color="#FFFFFF" />
        <stroke
            android:width="1dp"
            android:color="#000" />
    </shape>
</item>
</layer-list>

但它会在形状周围添加一个边框..

你能帮我吗?


在这种情况下最好使用9-patch。只需绘制上下边框并将右侧和左侧边框保留为透明。当然,要排除9-patch标记。 - Phantômaxx
8个回答

30

我认为您可以创建这个drawable并将其用作背景:

<?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="#000"/>
        </shape>
    </item>
    <item android:bottom="1dp" android:top="1dp">
        <shape android:shape="rectangle" >
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
</layer-list>

可以想象先画一个带有边框颜色的矩形,然后在其上方放置一个具有您背景颜色的矩形,顶部和底部各留出1dp的空白。


1
绘图时会不会有额外的负担呢? - CoolMind

26

将这个两个文件制作并放置这段代码。您可以设置顶部和底部的边框。

main.xml

<TextView
      android:text="This is textline"
      android:background="@drawable/border_set"
/>

border_set.xml

该文件位于完整路径 project_root/res/drawable/border_set.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#FF000000" />
            <solid android:color="#FFDDDDDD" />

        </shape>
   </item>

   <item android:top="1dp" android:bottom="1dp"> 
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#000" />
            <solid android:color="#FFFFFF" />
        </shape>
   </item>

</layer-list>

8
好的,我会尽力进行翻译。以下是需要翻译的内容:似乎它不起作用了。形状周围有一个边框。我已经更新了我的帖子。 - wawanopoulos
2
@wawanopoulos 这对我也不起作用。我认为你应该取消接受答案。这是误导性的。 - Sachin Jain
2
他也从这里获取了答案:https://dev59.com/HnI-5IYBdhLWcg3w9tdw - C Goldsworthy
2
这是一个适用于底部边框的版本:https://dev59.com/fmIk5IYBdhLWcg3we-H5#19239478 - Dacker
如果我想让上边框的颜色与下边框不同怎么办? - Si8
@sachinjain024 在去掉描边后它会正常工作。 - zeleven

22

这是解决方案,即使使用透明背景也可以正常工作。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:left="-2dp"  android:right="-2dp">
        <shape android:shape="rectangle">
            <stroke android:width="2dp" android:color="@color/borderColor" />
            <solid android:color="@color/backgroundColor" />
        </shape>
    </item>

</layer-list>

<solid/> 用于设置背景颜色。 - dzikovskyy

19
我相信这是最简单的方法:
<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="#000000" />

分隔线的正常颜色是灰色,而且它更细,所以这样会更好。<View android:layout_width="match_parent" android:layout_height="1dp" android:background="#efefef" /> - bvmobileapps

10

这是我的版本; 顶部和底部边框可见,左侧或右侧边框不显示。并且背景是透明的。

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="1dp">

    <item
        android:left="-1dp"
        android:right="-1dp"
        android:top="-1dp"
        android:bottom="1dp">
        <shape
            android:shape="rectangle">
            <stroke
                android:width="1dp"
                android:color="@color/BlueGrey_colorPrimary" />
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>

</layer-list>

6

快速实现方法:

  • 在布局的底部和/或顶部添加一个Text View。
  • 将TextView的宽度设置为“match_parent”
  • 将TextView的高度设置为约“1dp”或找到您想要的厚度
  • 将TextView的背景设置为所需的边框颜色

希望这可以帮助您!


1
很简单。画出三个像这样的形状。
<?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="@color/menu_line_separator_in" />
        </shape>
    </item>
    <item android:bottom="1.5dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/menu_line_separator_out" />
        </shape>
    </item>
    <item android:top="1.5dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/menu_line_separator_out" />
        </shape>
    </item>

</layer-list>

menu_line_separator_inmenu_line_separator_out有什么区别?假设我想在上下绘制黑线。我认为menu_line_separator_out只是一个黑色。但是,menu_line_separator_in呢? - Sam

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接