如何在relativelayout中添加底部边框

时间:2011-11-30 09:22:37

标签: android xml

<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样式但不使用listview。让我们说每个listitem是相对布局的。我想只设置底部边框,所以它看起来像listview的分隔符。

4 个答案:

答案 0 :(得分:12)

我希望我理解你说的话。

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

您可以根据需要进一步编辑。 然后从Outline中选择布局并单击Background properties,并选择您创建的边框xml。

这将为所有4创建边框。或者,您可以添加一个简单的

<View android:layout_width="1dip"
    android:layout_height="fill_parent"
    android:background="#FFFFFF" />

将其添加到布局的底部,然后根据自己的喜好更改颜色/尺寸。

答案 1 :(得分:10)

出于某种原因,其他解决方案对我来说并不起作用 - 无论我如何更改它,所有边界都会显示出来。这很有效:

<?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> 

我从这里得到了这个想法:Is there an easy way to add a border to the top and bottom of an Android View?

答案 2 :(得分: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"

答案 3 :(得分:0)

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