vertical studio recycler linearlayout horizontal cardview android android-layout android-linearlayout divider

studio - recycler divider android



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

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>


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:

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


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.


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


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.


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


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

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 atributo del divider en LinearLayout así:

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


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.


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

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


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


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

drawable / divider_horizontal_green_22.xml

<size android:width="22dip"/> <solid android:color="#00ff00"/> </shape>

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

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


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 quieres usar el divisor vertical entonces en lugar de android:height="1dp" usa android:width="1dp"

Consejo: No olvides el ítem android:showDividers .