ExpandableListView onExpand siempre desplaza el grupo expandido hacia arriba
Estoy buscando la manera de posicionar el grupo de expansibleListView en la parte superior, cuando se amplía. He intentado onGroupExpand, o en performItemClick de ExpandableListView.
SetSelectedPositionFromTop (int, int), partially funciona, pero si se inicia en un momento cuando el sistema inicia su propio desplazamiento, que la lista se overscrolled, y el grupo está fuera de la pantalla.
- Custom ExpandableListview Android
- Llamar setHasOptionsMenu (true) de un fragmento da como resultado múltiples llamadas a onCreateOptionsMenu en Activity
- Vista dinámica con desplazamiento horizontal y vertical
- La superposición de una vista no deshabilita las acciones en la vista subyacente
- Android: agrega la vista al diseño haciendo que el diseño esté delante de ActionBar
Lo siento por la descripción desordenada, pero es difícil decirlo sin mostrar exactamente lo que necesito.
- Lista ampliable de Android
- ExpandableListView con arrastrar y soltar de elementos de la lista en Android
- Arrastrar y soltar iconos a la pantalla de inicio
- Visualización preliminar en el grabador de medios android
- Android - stackoverflow Error
- Creación de LinearLayout en Java - Los elementos no se muestran
- ¿Cómo evitar que el teclado virtual de Android mueva la vista en un fragmento?
- Android mapview con fragmentos no se puede agregar dos veces?
Cambie el modo de transcripción a deshabilitado.
android:transcriptmode="disabled"
En el diseño de lista expandible.
Ponga esto en su adaptador:
public void onGroupExpanded(final int groupPosition) { super.onGroupExpanded(groupPosition); listView.setSelectedGroup(groupPosition); }
Pruebe setSelection (groupPosition) en onGroupExpand (int groupPosition).
He intentado muchas soluciones, pero el código a continuación funciona para me.Hope este código será útil para algunos one.Implements el OnGroupExpandListener con en onGroupExpand utilizar el código a continuación
public void onGroupExpand(final int groupPosition) { super.onGroupExpand(groupPosition); expandableListView.post(new Runnable() { @Override public void run() { expandableListView.setSelection(groupPosition); if(expandableListView.getChildAt(groupPosition)!=null) expandableListView.requestChildRectangleOnScreen(expandableListView.getChildAt(groupPosition), new Rect(0, 0, expandableListView.getChildAt(groupPosition).getRight(), expandableListView.getChildAt(groupPosition).getHeight()), false); } }); }
Tengo solución a este problema. No es suave, pero funciona bastante bien. Extensible listView messures es que debe moverse por número de niño. Parece, que el sistema piensa que el niño es la misma altura que el padre (grupo), por lo que si pones niño de diferente tamaño que causará problemas con la lista de desplazamiento automático.
Mi solución fue engañar a la lista para pensar que tiene más hijos. Si mi hijo es dos veces mayor que el grupo, recibo información de que el grupo tiene 2 hijos. Ahora, puesto que es lista construida de los datos, hago el cheque en mis datos, hay un dato para 2 childs, o solamente 1, si no tengo datos para el segundo niño, sé que puedo poner la opinión de la altura 0 como segundo niño.
Funcionó bien cuando tuve que hacer la lista con el grupo pequeño, y que con 1 niño grande.
Dado que no hubo respuesta a mi pregunta, publico esta, puede ayudar a alguien.
- Android: Notificar a Scrollview que el tamaño de su hijo ha cambiado: ¿cómo?
- Obtener NullPointerException en ListView personalizado