如何在线性布局的顶部和底部设置边框

3
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/home"
            android:layout_width="match_parent"
            android:layout_height="60dip"
            android:layout_marginRight="5dip"
            android:src="@anim/linearsavelocationbackground"
            android:weightSum="1" >

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="30dip"
                android:layout_height="30dip"
                android:layout_marginTop="15dip"
                android:layout_weight=".2"
                android:src="@drawable/homestatus" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="17dp"
                android:layout_weight=".6"
                android:gravity="center_vertical"
                android:paddingLeft="10dp"
                android:text="Home"
                android:textColor="#3a3838"
                android:textSize="15dp"
                android:textStyle="bold" />

            <ImageView
                android:id="@+id/homeimage"
                android:layout_width="30dip"
                android:layout_height="30dip"
                android:layout_marginRight="5dip"
                android:layout_marginTop="15dp"
                android:layout_weight="0.20"
                android:src="@drawable/deletingright" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/office"
            android:layout_width="match_parent"
            android:layout_height="60dip"
            android:layout_marginRight="5dip"
            android:background="#ffffff"
            android:src="@anim/linearsavelocationbackground"
            android:weightSum="1" >

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="30dip"
                android:layout_height="30dip"
                android:layout_marginTop="15dip"
                android:layout_weight=".2"
                android:src="@drawable/work" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="17dp"
                android:layout_weight=".6"
                android:gravity="center_vertical"
                android:paddingLeft="10dp"
                android:text="Home"
                android:textColor="#3a3838"
                android:textSize="15dp"
                android:textStyle="bold" />

            <ImageView
                android:id="@+id/homeimage"
                android:layout_width="30dip"
                android:layout_height="30dip"
                android:layout_marginRight="5dip"
                android:layout_marginTop="15dp"
                android:layout_weight="0.20"
                android:src="@drawable/deletingright" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

背景边框的设置
<?xml version="1.0" encoding="UTF-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
   <corners android:radius="20dp"/> 
   <padding android:left="10dp" android:right="10dp" android:top="10dp" android:bottom="10dp"/>
   <solid android:color="#CCCCCC"/>
 </shape>

这是我的代码,我试图在Linarlayout上显示顶部和底部的边框,但我无法显示效果。我需要设置主页线性布局和办公室线性布局的顶部和底部边框,我尝试进行设置,但效果不出现,请检查我哪里出错。


为什么你把它放在anim文件夹里?它应该是drawable文件夹里的可绘制对象... - Opiatefuchs
请查看这个链接 - MysticMagicϡ
5个回答

7
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:bottom="1dp"
    android:left="-2dp"
    android:right="-2dp"
    android:top="1dp">
    <shape android:shape="rectangle" >
        <stroke
            android:width="1dp"
            android:color="@android:color/darker_gray" />

        <solid android:color="@android:color/transparent" />

        <padding
            android:bottom="10dp"
            android:left="10dp"
            android:right="10dp"
            android:top="10dp" />
    </shape>
</item>

使用上面的布局作为背景边框,会给您带来非常好的效果。如果需要,可以更改颜色和填充。将其作为xml添加到您的drawable文件夹中,并将该可绘制对象设置为布局的背景。

希望这能够帮到您。


效果没有出现,我已经调用了同样的东西。 - Edge
你是如何使用这个的? - Vilas
它给了我意外的文件结尾。 - Moeez
意外的文件结束只需要在</item>之后加上</layer-list>闭合标签。 - publicknowledge

4
这可以通过使用LayerList实现。
创建一个名为border_top_bottom.xml的可绘制对象。
<item>
    <shape android:shape="rectangle" >
        <solid android:color="@color/your_border_color" />
    </shape>
</item>
<item
    android:top="1dp"
    android:bottom="1dp">
    <shape android:shape="rectangle" >
        <solid android:color="@color/your_fill_color" />
    </shape>
</item>

关于LinearLayout背景属性的使用

andorid:background:"@drawable/border_top_bottom.xml"

0

在drawable文件夹中添加以下代码的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">
                <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>

0

我认为你的问题不是你的形状,而是你在布局中引用它的方式:

         <LinearLayout
        android:id="@+id/home"
        android:layout_width="match_parent"
        android:layout_height="60dip"
        android:layout_marginRight="5dip"
        android:src="@anim/linearsavelocationbackground"
        android:weightSum="1" >

你已经将引用设置为anim文件夹,但它应该在drawable文件夹中。如果你的形状在anim文件夹中,请将其放入drawable文件夹中,并更正你的LinearLayouts src属性:
       android:src="@drawable/linearsavelocationbackground"

如果这不是你想要的,请使用krunal和EagleEye的示例创建一个形状。


现在它可以工作了,但是在底部它没有出现。这是我的整个Xml文件,并且我尝试在双线性布局中设置它,但它显示的效果像这样:XML:http://paste.ofcode.org/NzVwcK7M6Cpb5eiFntVugn,图像:http://snag.gy/si12m.jpg。而我想要的效果是像这样:http://snag.gy/iYnXM.jpg。 - Edge
您的LinearLayouts没有设置方向,请进行设置并检查结果... - Opiatefuchs

0

@Edge 请使用以下代码 假设 XML 文件的名称为 linearbg.xml 并将其放置在资源文件夹下的 drawable 文件夹中。

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

    <item>
        <shape>
            <solid android:color="#EEEEEE" />
        </shape>
    </item>

    <!-- This is the line -->
    <item
        android:top="1dp"
        android:bottom="1dp">
        <shape>
            <solid android:color="#FFFFFF" />
        </shape>
    </item>

</layer-list>

现在将linearbg.xml作为线性布局的背景,使用android:background="@drawable/linearbg"。


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