Android expandablelistview cómo establecer el espacio entre los elementos de los grupos

Tengo expandiblelistview y quiero agregar relleno (o margen) entre los elementos de los grupos, he utilizado el margin-botton en los elementos del grupo, funciona, pero ahora también se aplica al elemento de grupo y sus childs, quiero mantener un espacio Entre los elementos de grupo, no entre un elemento de grupo y su hijo, trabajo de esta manera:

Xml principal

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#FFFFFF"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:typeface="serif" android:textSize="25dip" android:textColor="#025f7c" android:text="@string/tv_allAddresses" android:layout_gravity="center" android:layout_marginTop="20dip" android:layout_marginBottom="25dip"/> <ExpandableListView android:id="@+id/elv_all_addresses_addresses" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dip"> </ExpandableListView> </LinearLayout> 

Grupo xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_all_address_group_groupName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="30dip" android:textColor="#000000" android:textSize="20dip" android:typeface="serif" /> </LinearLayout> 

Niño xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:id="@+id/tv_all_address_child_label" android:paddingLeft="50dip" android:typeface="serif" android:textSize="15dip" android:textColor="@color/BlueViolet" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tv_all_address_child_value" android:textColor="#000000" android:layout_marginLeft="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

4 Solutions collect form web for “Android expandablelistview cómo establecer el espacio entre los elementos de los grupos”

Porque está utilizando adapter que se extiende desde BaseExpandableListAdapter para que pueda establecer el relleno mediante programación estableciendo el relleno al elemento de grupo cuando el grupo no se está expandiendo y, a continuación, quitar el relleno cuando el grupo se está expandiendo y para cada grupo establecer relleno al último hijo en él.

Ajuste del relleno al último niño

 public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { if (childPosition == groups.get(groupPosition).getChilds().size() - 1) { convertView.setPadding(0, 0, 0, 20); } else convertView.setPadding(0, 0, 0, 0); return convertView; } 

Ajuste del relleno al elemento de grupo cuando se está expandiendo

 public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { if (isExpanded) convertView.setPadding(0, 0, 0, 0); else convertView.setPadding(0, 0, 0, 20); return convertView; } 

Nota

Supongo que estás usando arraylist para tus grupos y tus hijos, solo puedes reemplazar los groups.get(groupPosition).getChilds().size() - 1 por el tamaño de tu grupo dependiendo de tu estructura

En caso de que esté buscando una mejor opción, simplemente agregue

 expandablelsv.setDividerHeight(); 

Después de que el group y el child indicator que funciona completamente bien en mi caso, darle una oportunidad

Verifique si el niño es el último y agregue el relleno allí

 public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { if (isLastChild) { convertView.setPadding(0, 0, 0, 30); } return convertView; } 

Yo estaba teniendo el mismo tipo de problema por lo que se me ocurrió una solución infantil. Lo que hice fue agregado a un diseño lineal con las mismas propiedades tanto en el archivo de diseño padre como en el archivo de disposición secundaria de la vista de lista expandible. Y cuando se hace clic en un grupo hice el "diseño lineal" del archivo de diseño padre invisible y mi trabajo se hizo.

Archivo de disposición de grupo

 <TextView android:id="@+id/expandable_faqparent_id" android:layout_width="match_parent" android:layout_height="50dp" android:layout_margin="2dp" android:layout_marginBottom="30dp" android:background="#ffffff" android:gravity="center" android:text="hello this is dummy text" android:textSize="20dp" android:textStyle="bold" /> <LinearLayout android:id="@+id/linear_parent_faq" android:layout_width="match_parent" android:layout_height="10dp" android:background="#cfd8dc" android:layout_weight="0.06" android:orientation="vertical"> </LinearLayout> 

Archivo de disposición infantil

 <TextView android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/expandable_faq_child_id" android:text="DUMMY PARENT" android:background="#ffffff" android:gravity="center" android:elevation="2dp"/> <LinearLayout android:id="@+id/linearfaq" android:layout_width="match_parent" android:layout_height="10dp" android:background="#cfd8dc" android:orientation="vertical"> </LinearLayout> 

Para ocultar el diseño lineal cuando se hace clic en cualquier grupo Añada esta línea al método addChildView en la clase del adaptador

 lv.setVisibility(View.INVISIBLE); 

Aquí lv contiene el id del diseño lineal

Linear_parent_faq

Del archivo de disposición de grupo.

  • Diseño en blanco - eglSurfaceAttrib no implementado
  • Android Studio APK estéril para la variante de construcción después de cambios xml
  • Forma rectangular con dos colores sólidos
  • TransitionDrawable como fondo en TextView no funciona como se esperaba
  • ¿Cómo hacer que EditText sea más pequeño que el predeterminado?
  • XML predeterminado para la notificación de estado
  • ¿Cómo se crean Fragmentos de preferencias y preferencias en Android?
  • Mala disposición XML con Eclipse-ADT
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.