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

问题描述 投票:19回答:8

我想在我的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>

但它在形状周围添加了边框..

请问你能帮帮我吗 ?

android android-linearlayout android-shape
8个回答
22
投票

制作这两个文件并放入此代码。你可以设置边框顶部和底部边框,

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>

27
投票

我认为你可以创建这个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。


19
投票

这是解决方案。它甚至可以在透明背景下工作。

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

6
投票

我的版本是这样,只有边框顶部和底部可见,不显示左边或右边的边框。背景是透明的。

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

我相信这是最简单的方法:

<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="#000000" />

5
投票

快速实现此目的的方法:

  • 将文本视图添加到布局的底部和/或顶部。
  • 将TextView的宽度设置为“match_parent”
  • 将TextView的高度设置为大约“1dp”或找到您想要的厚度
  • 将TextView的背景设置为您希望边框的颜色

我希望这有帮助!


1
投票

1
投票

这很简单。绘制3个这样的形状。

<?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>
© www.soinside.com 2019 - 2024. All rights reserved.