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

时间:2014-04-22 10:00:42

标签: android android-linearlayout android-shape

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

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

你能帮我吗?

8 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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>

答案 2 :(得分: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>

答案 3 :(得分: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>

答案 4 :(得分:6)

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

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

答案 5 :(得分:5)

实现这一目标的快捷方法:

  • 在文字的底部和/或顶部添加文字视图。
  • 将TextView的宽度设置为&#34; match_parent&#34;
  • 将TextView的高度设置为大约&#34; 1dp&#34;或找到你想要的厚度
  • 将TextView的背景设置为您希望边框为
  • 的颜色

我希望这有帮助!

答案 6 :(得分: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>

答案 7 :(得分:1)