studio recyclerview lista item expandible expandablelist ejemplo desplegable android android-fragments expandablelistview

recyclerview - Coloque a la derecha el indicador de una ExpandableListView en Android



lista expandible android (4)

Tengo que mover el indicador de izquierda a derecha (debido a la imagen del avión). Tampoco pude tener éxito porque la lista de visualización expandible está dentro de un fragmento y no dentro de una actividad completa. ¿Alguna idea? ¡Gracias!


En su archivo groupcustom.xml puede usar Relativelayout y poner esa imagen en

android:alignParentRight = "true";


Una solución más es: 1) Primero configure groupIndicator en su ExpandableListView a @null:

<ExpandableListView [...] android:groupIndicator="@null" />

2) A continuación, cree el archivo group_indicator.xml con los siguientes detalles:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/down_icon" android:state_selected="false"></item> <item android:drawable="@drawable/up_icon" android:state_selected="true"></item> <item android:drawable="@drawable/down_icon"></item> </selector>

3) Luego cree el diseño group_header.xml con los siguientes detalles e infle este diseño en el método getGroupView () de ExpandableListAdapter.java:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp"> <TextView android:id="@+id/tvHeader" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:textColor="@color/white" android:layout_centerVertical="true" android:textSize="16sp"/> <ImageView android:id="@+id/ivGroupIndicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/group_indicator" android:layout_centerVertical="true" android:layout_alignParentRight="true"/> </RelativeLayout>

3) En el método getGroupView () de su clase ExpandableListAdapter.java, simplemente configure lo siguiente:

ivGroupIndicator.setSelected(isExpanded);

Con este enfoque, su down_icon y up_icon funcionarán correctamente. Espero que esto ayude.


otra solución para poner el indicador a la derecha programáticamente:

expandableListView = (ExpandableListView) findViewById(R.id.expandableListView); Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x; Resources r = getResources(); int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, r.getDisplayMetrics()); if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { expandableListView.setIndicatorBounds(width - px, width); } else { expandableListView.setIndicatorBoundsRelative(width - px, width); }

donde expandableListView es su ExpandableListview


No sé cómo hacerlo desde XML, pero te diré una forma de hacerlo de forma dinámica en tu adaptador.

Primero debes eliminar el indicador de grupo de tu xml

<ExpandableListView [...] android:groupIndicator="@null" />

Luego, en su diseño del padre, agregue una vista de imagen en la posición correcta de su diseño.

Luego, en su adaptador personalizado, haga lo siguiente

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { ... if (isExpanded) { groupHolder.img.setImageResource(R.drawable.group_down); } else { groupHolder.img.setImageResource(R.drawable.group_up); } ... }