2011-11-30 31 views
15
<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> 

Quiero establecer solo el borde inferior en relativelayout. Quiero mostrar el estilo de vista de lista pero no usar listview. Digamos que cada elemento de lista es relativlayout. Quiero establecer solo el borde inferior para que se vea como un divisor de lista de lista.cómo agregar el borde inferior en relativelayout

+0

Aquí es mi respuesta a una pregunta muy similar. El problema se resuelve con una biblioteca liviana y directa. http://stackoverflow.com/a/30802089/3649279 – PAD

+0

Por favor, intente mi ans aquí [BorderedRelativeLayout] (https://stackoverflow.com/a/45959525/6258971) – suulisin

Respuesta

12

Espero haber entendido lo que ha dicho.

en la res carpeta Creación de una nueva carpeta (si no lo tiene) llamado dibujable

no crear un xml llamado "borders.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> 

Puede editar más que como quieras. A continuación, seleccione el diseño del Esquema y haga clic en Propiedades de fondo, y seleccione los bordes xml que creó.

Esto creará fronteras para todos 4. Alternativamente, se puede añadir una simple línea

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

y añadirlo a la parte inferior de su diseño y cambiar el color/el tamaño de su agrado.

+9

Hace visibles los 4 bordes, no solo los inferiores. –

0

Una manera simple de mostrar un borde es crear un LinearLayout horizontal, y establecer su color y altura de fondo de acuerdo con el borde que desee.

+1

No creo que sea una buena idea: un LinearLayout no está destinado a ser usado para hacer bordes ... – mithrop

+0

No, esta no es una buena manera –

+0

Es una manera simple, y usted obtiene algunas propiedades en su borde. – Charleston

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> 

Usted puede guardar esto como borderframe.xml en la carpeta res/estirable (créelo si no lo existe todavía), y hacer referencia a él de este modo: android:background="@drawable/borderframe".

10

Por alguna razón, las otras soluciones no funcionaron para mí, todas las fronteras se mostraron sin importar cómo lo haya cambiado. Esto funcionó:

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

El color del borde es de color gris y el fondo es blanco para el contenedor (LinearLayout en mi ejemplo). Simplemente puede cambiar el segundo elemento para que el borde sea más grueso o tenga un borde en la parte superior/izquierda/derecha.

Así es como el xml diseño se parece a:

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

me ocurrió la idea de aquí: Is there an easy way to add a border to the top and bottom of an Android View?

+0

Funciona perfecto para mí – akohout

+0

Sólo quiero agregar el borde inferior, agregó los 4 bordes. –

+0

Este es el que funcionó para mí, finalmente, ¡gracias! – OneThreeSeven

Cuestiones relacionadas