如何仅显示顶部和底部边框

17

这是我的XML代码,它工作良好,唯一的问题是它在四个边上都显示了边框,而我只想在顶部和底部显示边框。我该如何做到这一点?

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

    <solid android:color="#FFFFFF" />
    <stroke
        android:width="3dip"
        android:color="#B1BCBE"
    />

    <padding
        android:bottom="0dip"
        android:left="0dip"
        android:right="0dip"
        android:top="0dip"
    />

</shape>

1
这个回答是否解决了你的问题?有没有一种简单的方法在Android视图的顶部和底部添加边框? - Gk Mohammad Emon
5个回答

47

请尝试以下

<?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="#FF0000" /> 
    </shape>
  </item>   
    <item android:bottom="5dp"  android:top="5dp" >  
     // add android:right="5dp" and android:left="5dp" for border on left and right
     <shape android:shape="rectangle"> 
      <solid android:color="#000000" />
    </shape>
   </item>    
 </layer-list> 

在此输入图片描述

编辑:

通过更改颜色、描边宽度和填充来根据您的要求修改下面的内容

<?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="5dip"
        android:color="#B1BCBE"
    />
    <padding
        android:bottom="0dip"
        android:left="0dip"
        android:right="0dip"
        android:top="0dip"
    />
    </shape>
  </item>   
    <item android:bottom="5dp"  android:top="5dp" >  
     <shape android:shape="rectangle"> 
      <solid android:color="#FFFFFF" />
    </shape>
   </item>    
 </layer-list>  

快照

在此输入图像描述


如果我想要红色在顶部,蓝色在底部怎么办?我想要像这样的效果:https://2.bp.blogspot.com/-FI3EGIqLOc4/VkNs8YtLSGI/AAAAAAAAb6w/yEGC_F3zP9o/s1600/AndroidLayerDrawableProgrammatically.png 围绕布局...有没有不通过代码而是通过XML实现的方法? - Si8
为什么要使用 layer-list? - Fernando Torres

16

使用:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <!-- Describes the line -->
    <item android:top="-1dp" android:bottom="-1dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke android:width="1dp" android:color="#ffffff" />
        </shape>   
    </item>
</layer-list>

1
尝试使用margin。去掉左右padding并给出android:marginLeft="-3dip"。 - Prachi
<item android:top="1dp" android:bottom="1dp" android:left="-1dp" android:right="-1dp"> - frostymarvelous
1
这看起来太好了,难道没有任何已知问题吗?例如,在某些设备上,由于分数dp差异,不可见的笔画是否会出现卡顿? - Taylan

6
尝试这个:

试试这个:

<padding
    android:bottom="0dip"
    android:left="-1dip"
    android:right="-1dip"
    android:top="0dip" 
/>

增加负的填充或边距。 :) - Prachi

2

最好不要在layer-list中提及height和width属性,因为item的height和width属性仅支持API 23及以上版本。

您可以使用以下适用于Android 4.0以下和5.0以上版本的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="@color/blue_light" />  <!-- this is stroke color-->
        </shape>
    </item>

    <item android:bottom="5dp" android:top="5dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/dark_blue" />  <!-- this is main color-->
        </shape>
    </item>

</layer-list>

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="#cccccc"/>
        </shape>
    </item>
    <item android:top="2dp" android:bottom="2dp">
        <shape 
            android:shape="rectangle">
        <solid android:color="#efefef"/>
        </shape>
    </item>
</layer-list>

颜色方案更改,现在我的背景颜色是ffff,你的已更改。 - user2761245

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