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

  

usar esto para divisor horizontal

  

y esto para divisor vertical

  

O si puede usar el divisor LinearLayout, para divisor horizontal

      

y en LinearLayout

  

Si quieres usar el divisor vertical entonces en lugar de android:height="1dp" usa android:width="1dp"

Consejo: No olvides el ítem android:showDividers .

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

vertical_divider_1.xml

      

Y usa el atributo del divider en LinearLayout así:

     

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

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

  

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

Actualización: pre-Honeycomb usando AppCompat

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

Código de ejemplo:

  

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

        

Nota muy importante: la vista LinearLayoutCompat no extiende LinearLayout y por lo tanto no debe usar las android:showDividers o android:divider , sino las propiedades personalizadas: app:showDividers y app:divider . En el código, también debe usar LinearLayoutCompat.LayoutParams no LinearLayout.LayoutParams .

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:

    

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.

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); } 

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

  

Es posible que tu divisor no se muestre debido a un divisorPadding demasiado grande. Estableces 22dip, eso significa que el divisor está truncado por 22dip desde la parte superior y 22dip desde la parte inferior. Si la altura de su diseño es menor o igual a 44 dips, entonces no hay ningún divisor visible.

Debe crear cualquier vista para separador como vista de texto o vista de imagen y luego establecer el fondo para que, si tiene otra imagen, use el color como fondo.

Espero que esto te ayude.

Para dibujar, el divisor de LinearLayout debe tener cierta altura, mientras que ColorDrawable (que es esencialmente #00ff00 así como cualquier otro color codificado) no tiene. Una manera simple (y correcta) de resolver esto, es envolver su color en un Drawable con altura predefinida, como la shape dibujable

Puede usar IcsLinearLayout, como se usa en la biblioteca ActionBarSherlock, o usar la API normal que está disponible en ICS (o copiar su código).

EDITAR: también puede usar LinearLayoutICS como se usa en la biblioteca de soporte. He hecho una publicación al respecto aquí .

Puedes usar la misma técnica para crear el dibujable como se muestra aquí , o crear un dibujable de 9 parches.

Si la respuesta de Kapil Vats no funciona, intente algo como esto:

drawable / divider_horizontal_green_22.xml

     

layout / your_layout.xml

 LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/llTopBar" android:orientation="horizontal" android:divider="@drawable/divider_horizontal_green_22" android:showDividers="middle" > 

Encontré un problema donde el atributo de relleno no funcionaba, así que tuve que establecer la altura del divisor directamente en el divisor.

Nota:

Si quieres usarlo en LinearLayout vertical, crea uno nuevo, como este: drawable / divider_vertical_green_22.xml