Pregunta ¿Cómo agregar divisor (vertical) a LinearLayout horizontal?


Estoy tratando de agregar un divisor a un diseño lineal horizontal, pero estoy llegando a ninguna parte. El divisor simplemente no se muestra. Soy un novato total con Android.

Este es mi diseño XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/llTopBar"
        android:orientation="horizontal"
        android:divider="#00ff00"
        android:dividerPadding="22dip"
        android:showDividers="middle"
       >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="asdf" />
            <Button
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="asdf"
             />

    </LinearLayout>

</RelativeLayout>

74
2018-02-28 06:08


origen


Respuestas:


usar esto para divisor horizontal

<View
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:background="@color/honeycombish_blue" />

y esto para divisor vertical

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@color/honeycombish_blue" />

O si puede usar el divisor LinearLayout, para divisor horizontal

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <size android:height="1dp"/>
    <solid android:color="#f6f6f6"/>
</shape>

y en LinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@drawable/divider"
    android:orientation="vertical"
    android:showDividers="middle" >

Si desea utilizar el divisor vertical, en lugar de android:height="1dp" en forma uso android:width="1dp"

Propina: No lo olvides el android:showDividers ít.


181
2018-02-28 06:17



Intenta esto, crea un divisor en el res/drawable carpeta:

vertical_divider_1.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">    
    <size android:width="1dip" />
    <solid android:color="#666666" />    
</shape> 

Y usa el divider atributo en LinearLayout como este:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:orientation="horizontal"
    android:divider="@drawable/vertical_divider_1"
    android:dividerPadding="12dip"
    android:showDividers="middle"
    android:background="#ffffff" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

Nota:  android:divider solo está disponible en Android 3.0 (API nivel 11) o superior.


64
2018-02-28 06:24



Es fácil agregar divisor al diseño, no necesitamos una vista separada.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:divider="?android:listDivider"
    android:dividerPadding="2.5dp"
    android:orientation="horizontal"
    android:showDividers="middle"
    android:weightSum="2" ></LinearLayout>

Encima del código, haga el divisor vertical para LinearLayout


29
2017-10-21 06:51



Actualización: pre-Honeycomb usando AppCompat

Si está utilizando la biblioteca AppCompat v7, es posible que desee utilizar el LinearLayoutCompat ver. Usando este enfoque puedes usar divisores dibujables en Android 2.1, 2.2 y 2.3.

Código de ejemplo:

<android.support.v7.widget.LinearLayoutCompat
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:showDividers="middle"
        app:divider="@drawable/divider">

drawable / divider.xml: (divisor con algo de relleno en la parte superior e inferior)

<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
        android:insetBottom="2dp"
        android:insetTop="2dp">
    <shape>
        <size android:width="1dp" />
        <solid android:color="#FFCCCCCC" />
    </shape>
</inset>

Nota muy importante: los LinearLayoutCompat la vista no se extiende LinearLayout y por lo tanto no deberías usar android:showDividers o android:divider propiedades, pero las personalizadas: app:showDividers y app:divider. En el código también debes usar LinearLayoutCompat.LayoutParams no la LinearLayout.LayoutParams!


15
2018-03-13 16:08



Me encontré con el mismo problema hoy. Como indican las respuestas anteriores, el problema radica en el uso de un color en la etiqueta divisora, en lugar de un dibujable. Sin embargo, en lugar de escribir mi propio xml dibujable, prefiero usar atributos temáticos tanto como sea posible. Puedes usar el android: attr / dividerHorizontal y android: attr / dividerVertical para obtener un drawable predefinido en su lugar:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:showDividers="middle"
    android:divider="?android:attr/dividerVertical"
    android:orientation="horizontal">
    <!-- other views -->
</LinearLayout>

Los atributos están disponibles en API 11 y superior.

Además, como lo menciona bocekm en su respuesta, la propiedad dividerPadding NO agrega relleno extra a cada lado de un divisor vertical, como se podría suponer. En cambio, define el relleno superior e inferior y, por lo tanto, puede truncar el divisor si es demasiado grande.


8
2018-03-31 16:55



Frustrantemente, debes habilitar mostrar los divisores del código en tu actividad. Por ejemplo:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set the view to your layout
    setContentView(R.layout.yourlayout);

    // Find the LinearLayout within and enable the divider
    ((LinearLayout)v.findViewById(R.id.llTopBar)).
        setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);

}

4
2018-06-28 22:04



Puede usar el divisor incorporado, esto funcionará para ambas orientaciones.

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:divider="?android:attr/listDivider"
  android:orientation="horizontal"
  android:showDividers="middle">

4
2018-02-29 16:53