如何在RelativeLayout中添加底部边框

16
<LinearLayout 
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:orientation="vertical" android:background="@drawable/settings_border" android:padding="1dp"
            android:layout_marginLeft="15dip" android:layout_marginRight="15dip" android:layout_marginTop="5dip">
            <RelativeLayout android:id="@+id/map_refresh"
                android:layout_height="fill_parent" android:layout_width="wrap_content" 
                android:background="@drawable/settings_selector_up" 
                android:padding="15dp">
                <TextView android:id="@+id/Text1" 
                    android:layout_height="wrap_content" android:layout_width="wrap_content"
                    android:text="Map refresh period">
                </TextView>
                <TextView android:id="@+id/TextView09" 
                    android:layout_height="wrap_content" android:layout_width="wrap_content"
                    android:text="1 min" 
                    android:layout_alignParentRight="true"
                    android:paddingRight="5dp">
                </TextView>
            </RelativeLayout>

            <RelativeLayout android:id="@+id/own_location" 
                android:layout_height="fill_parent" android:layout_width="wrap_content" 
                android:padding="15dp"
                android:background="@drawable/settings_selector_mid">
                <TextView android:id="@+id/Text1" 
                    android:layout_height="wrap_content" android:layout_width="wrap_content"
                    android:text="Own location update period">
                </TextView>
                <TextView android:id="@+id/TextView09" 
                    android:layout_height="wrap_content" android:layout_width="wrap_content"
                    android:text="1 min" 
                    android:layout_alignParentRight="true"
                    android:paddingRight="5dp">
                </TextView>
            </RelativeLayout>

我想在RelativeLayout中仅设置底部边框。我想以列表视图的样式显示,但不使用ListView。假设每个列表项都是RelativeLayout。我只想设置底部边框,使其看起来像ListView的分隔符。


这是我对一个非常类似的问题的答案。问题已经通过一个轻量级直接的库得到解决。https://dev59.com/gGkv5IYBdhLWcg3wpCQz#30802089 - PAD
请在这里尝试我的答案 BorderedRelativeLayout - suulisin
4个回答

13

我希望我理解了你说的话。

在res文件夹中创建一个新文件夹(如果你还没有它),名为drawable。

在那里创建一个名为“borders.xml”的xml文件。

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
        <gradient android:angle="90" android:centerColor="#6da23f" android:endColor="#8bc45d" android:startColor="#2f481c" />

            <stroke android:width="2dp" android:color="#999999" />

            <padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" />

            <corners android:radius="10px"/>
        </shape>
    </item>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
            <gradient android:angle="90" android:centerColor="#6da23f" android:endColor="#8bc45d" android:startColor="#4c8a39" />

            <stroke android:width="1dp" android:color="#FFFFFF" />

            <padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" />

            <corners android:radius="10px"/>
        </shape>
    </item>
</selector>
你可以按照自己的意愿进一步编辑它。然后从大纲中选择布局,点击背景属性,选择你创建的边框xml。
这将为所有4个创建边框。或者,你可以添加一个简单的。
<View android:layout_width="1dip"
    android:layout_height="fill_parent"
    android:background="#FFFFFF" />

在您的布局底部添加一行并将其颜色/大小更改为您喜欢的样式。


9
它会使所有四个边框都可见,而不仅仅是底部。 - ryabenko-pro

11

由于某些原因,其他解决方案对我不起作用 - 无论我如何更改,所有边框都会显示。这个方法有效:

<?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="@color/gray" />
            <solid android:color="@color/gray" />
        </shape>
    </item>

    <item android:bottom="1dp">
        <shape
            android:shape="rectangle">
            <stroke android:width="1dp" android:color="@color/white" />
            <solid android:color="@color/white" />

        </shape>
    </item>
</layer-list>

容器(在我的示例中为LinearLayout)的边框颜色为灰色背景为白色。您可以简单地更改第二个项目以使边框变粗或者在上/左/右边框。

这是布局XML的外观:

<LinearLayout
        android:id="@+id/searchWrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:background="@drawable/bottom_gray_border"
        android:layout_alignParentTop="true">

        <EditText
            android:id="@+id/searchEditText"
            style="@style/EditTextSearch"
            android:hint="@string/find"
            android:layout_marginLeft="5dp"/>

</LinearLayout> 

我从这里获得了灵感:有没有一种简单的方法在Android视图的顶部和底部添加边框?


我只想添加底部边框,结果却添加了所有四个边框。 - Jagveer Singh
这是最终为我工作的,谢谢! - OneThreeSeven

8
<?xml version="1.0" encoding="UTF-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="1dip"
        android:color="#FF8000" />

    <solid 
        android:color="#00FFFFFF"
        android:paddingLeft="10dip"
        android:paddingTop="10dip"/>

    <corners android:radius="10px"/>

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

您可以将此文件保存为borderframe.xml,并将其放在res/drawable文件夹中(如果尚不存在,请创建它),然后像这样引用它:android:background="@drawable/borderframe"


0
一个简单的显示边框的方法是创建一个水平的LinearLayout,并根据所需的边框设置其背景颜色和高度。

1
我认为这不是一个好主意:LinearLayout并不适合用来制作边框... - mithrop
这是一种简单的方法,您可以在边框上获得一些属性。 - Charleston

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