Как добавить нижнюю границу в relativelayout

<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. Допустим, что каждый список является релятивным. Я хочу установить только нижнюю границу, чтобы он выглядел как разделитель списка.

Ответы

Ответ 1

Надеюсь, я понял, что вы сказали.

в папке res создайте новую папку (если у вас ее еще нет) с именем drawable

создайте xml с именем "limits.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" />

и добавьте его в нижней части макета и измените цвет/размер по своему вкусу.

Ответ 2

По какой-то причине другие решения не сработали для меня - все границы были показаны независимо от того, как я ее изменил. Это сработало:

<?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-вида?

Ответ 3

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

Ответ 4

Простым способом отображения границы является создание горизонтального LinearLayout и установка его цвета фона и высоты в соответствии с необходимой рамкой.