【问题标题】:How to add border around linear layout except at the bottom?如何在除底部之外的线性布局周围添加边框?
【发布时间】:2012-05-04 22:56:34
【问题描述】:

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

【问题讨论】:

    标签: android android-linearlayout


    【解决方案1】:

    在drawable文件夹中创建一个名为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 的银河系中进行了测试,并且运行良好,如下图所示:

    在运行 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> 
    

    希望对您有所帮助。

    【讨论】:

    • 它对你有用吗,这个测试和我一起工作,请检查一下
    • 还有什么要补充的吗?没有为我工作。下面的另一个答案虽然有效。
    • @Noman 与所有 API 完美配合,请检查更新答案
    • 透明矩形而不是红色边框的黑色怎么样?
    • @hanry 你可以用另一种方式来做,检查 EDIT 2
    【解决方案2】:

    保存此 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>
    

    希望这会有所帮助! :)

    【讨论】:

    • 这必须是接受的答案。与 Nexus 5 5.1.1 一起工作
    • 我试过这个解决方案但是底部边框还在?
    【解决方案3】:

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

    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 放在了错误的文件夹中!

    【讨论】:

      【解决方案4】:

      这是一个Github link ,它是一个轻量级且非常易于集成的库,使您能够根据需要为任何您想要的小部件使用边框,只需基于 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>
      

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

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

      【讨论】:

      • 这就是我一直在寻找的 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多