2011-11-30 14 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> 

Voglio impostare solo il bordo inferiore in relativelayout. Voglio visualizzare lo stile listview ma non usare listview. Diciamo che ogni listino è relativlayout. Voglio impostare solo il bordo inferiore in modo che assomigli al divisore di una listview.come aggiungere il bordo inferiore in relativelayout

+0

Ecco la mia risposta ad una domanda molto simile. Il problema è risolto con una libreria semplice e leggera. http://stackoverflow.com/a/30802089/3649279 – PAD

+0

si prega di provare i miei ans qui [BorderedRelativeLayout] (https://stackoverflow.com/a/45959525/6258971) – suulisin

risposta

12

Spero di aver capito cosa hai detto.

nelle res cartella creare una nuova cartella (se non lo avete già) denominato drawable

non creare un XML denominato "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> 

Si può ulteriormente modificarlo come desidera. Quindi seleziona il layout dalla Struttura e fai clic su Proprietà sfondo e seleziona i bordi xml che hai creato.

Questo creerà confini per tutti 4. In alternativa, è possibile aggiungere una semplice linea

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

e aggiungerlo alla parte inferiore del layout e cambiare il colore/formato a proprio piacimento.

+9

Rende visibili tutti e 4 i bordi, non solo quelli inferiori. –

0

Un modo semplice per visualizzare un bordo è creare un LinearLayout orizzontale e impostarne il colore e l'altezza in base al bordo desiderato.

+1

Non penso che sia una buona idea: un LinearLayout non è destinato a essere utilizzato per creare bordi ... – mithrop

+0

No, questo non è un buon modo –

+0

È un modo semplice e ottieni alcune proprietà sul bordo. – 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> 

È possibile salvare questo come borderframe.xml nella cartella res/drawable (crearlo se doesnt esiste ancora), e fare riferimento in questo modo: android:background="@drawable/borderframe".

10

Per qualche motivo le altre soluzioni non hanno funzionato per me: tutti i bordi sono stati mostrati, non importa come l'ho cambiato. Questo ha funzionato:

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

Il colore del bordo è grigio e lo sfondo è bianco per il contenitore (LinearLayout nel mio esempio). Puoi semplicemente cambiare il secondo elemento per rendere il bordo più spesso o avere il bordo in alto/a sinistra/a destra.

è così che l'XML di layout si presenta come:

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

ho avuto l'idea da qui: Is there an easy way to add a border to the top and bottom of an Android View?

+0

Funziona perfettamente per me – akohout

+0

voglio solo aggiungere bordo inferiore, ha aggiunto tutti e 4 i bordi. –

+0

Questo è quello che ha funzionato per me, finalmente, grazie! – OneThreeSeven

Problemi correlati