【问题标题】:Add only top and bottom border on LinearLayout [duplicate]在 LinearLayout 上仅添加顶部和底部边框 [重复]
【发布时间】:2014-06-06 15:12:43
【问题描述】:

我只想在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 补丁。只画上下边框,左右边框透明。当然,不包括 9 个补丁标记。
  • 您可以关注[是否有一种简单的方法可以在Android View 的顶部和底部添加边框?][1] [1]:stackoverflow.com/questions/1598119/…

标签: android android-linearlayout android-shape


【解决方案1】:

这是我的版本;上边框和下边框可见,不显示左边框或右边框。而且背景是透明的。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 分隔线的正常颜色是灰色,比较薄,这样会更好。
    【解决方案3】:

    实现此目的的快速方法:

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

    我希望这会有所帮助!

    【讨论】:

      【解决方案4】:

      很简单。像这样画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>
      

      【讨论】:

      • menu_line_separator_in 和 menu_line_separator_out 有什么区别?说我想在顶部和底部画黑线。我认为 menu_line_separator_out 只是一种黑色。但是,menu_line_separator_in 怎么样?
      【解决方案5】:

      这里是解决方案。它甚至适用于透明背景。

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

      【讨论】:

      • 绘画不会有开销吗?
      【解决方案7】:

      制作这两个文件并放入这段代码。可以设置边框上下边框,

      ma​​in.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>
      

      【讨论】:

      • 好像不行。形状周围有一个边框。我已经更新了我的帖子
      • @wawanopoulos 这对我也不起作用。我认为您应该不接受答案。这是误导
      • 他也从这里得到了答案:stackoverflow.com/questions/1598119/…
      • 这是一个适用于底部边框的版本:stackoverflow.com/a/19239478/4975760
      • 如果我希望边框顶部的颜色与边框底部的颜色不同?
      【解决方案8】:

      【讨论】:

        猜你喜欢
        • 2011-09-15
        • 2011-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多