65

如何在除底部之外的线性布局周围添加边框?LinearLayout 需要在左侧、顶部和右侧有边框,但不能在底部。

4

4 回答 4

169

在可绘制文件夹中创建一个名为border.xml 的XML 文件,并将以下代码放入其中。

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

然后像这样为您的线性布局添加背景:

         android:background="@drawable/border"

编辑 :

此 XML 已使用运行GingerBread 2.3.3的 Galaxy 进行测试,并且运行良好,如下图所示:

在此处输入图像描述

使用运行JellyBean 4.1.2的 Galaxy s 3 进行测试,运行完美,如下图所示:

在此处输入图像描述

最后,它与所有 API 完美配合

编辑 2:

也可以使用描边来保持背景透明,同时除了底部之外仍然保持边框,使用以下代码。

<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:left="0dp" android:right="0dp"  android:top="0dp"  
        android:bottom="-10dp"> 
    <shape android:shape="rectangle">
     <stroke android:width="10dp" android:color="#B22222" />
    </shape>
   </item>  
 </layer-list> 

希望这有帮助。

于 2012-05-05T13:12:43.430 回答
57

保存此 xml 并添加为线性布局的背景....

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="4dp" android:color="#FF00FF00" /> 
    <solid android:color="#ffffff" /> 
    <padding android:left="7dp" android:top="7dp" 
            android:right="7dp" android:bottom="0dp" /> 
    <corners android:radius="4dp" /> 
</shape>

希望这可以帮助!:)

于 2012-05-04T23:03:07.743 回答
22

肯尼是对的,只是想澄清一些事情。

  1. 创建文件border.xml并将其放入文件夹中res/drawable/
  2. 添加代码

    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
       <stroke android:width="4dp" android:color="#FF00FF00" /> 
       <solid android:color="#ffffff" /> 
       <padding android:left="7dp" android:top="7dp" 
            android:right="7dp" android:bottom="0dp" /> 
       <corners android:radius="4dp" /> 
    </shape>
    
  3. android:background="@drawable/border"像任何你想要的边界一样设置背景

我的第一个没有用,因为我把border.xml文件夹放错了!

于 2013-03-01T09:37:32.300 回答
2

这是一个轻量级且非常易于集成的库的Github 链接,它使您可以根据需要为任何所需的小部件使用边框,只需基于 FrameLayout 小部件。

这是一个快速示例代码,让您了解它是多么容易,但您会在链接上找到更多信息。

<com.khandelwal.library.view.BorderFrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:leftBorderColor="#00F0F0"
            app:leftBorderWidth="10dp"
            app:topBorderColor="#F0F000"
            app:topBorderWidth="15dp"
            app:rightBorderColor="#F000F0"
            app:rightBorderWidth="20dp"
            app:bottomBorderColor="#000000"
            app:bottomBorderWidth="25dp" >
    </com.khandelwal.library.view.BorderFrameLayout>

因此,如果您不希望底部有边框,请在此自定义小部件中删除关于底部的两行,这样就完成了。

不,我既不是这个图书馆的作者,也不是他的朋友;-)

于 2015-06-12T11:35:46.423 回答