android - Appcompat "java.lang.IllegalArgumentException: el parámetro debe ser un descendiente de esta vista" en ViewGroup.offsetRectBetweenParentAndChild
(4)
¿Has intentado configurar la Focusability en tu vista correctamente ?:
mYourView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
o en XML
android:descendantFocusability="blocksDescendants"
Estoy experimentando este problema al azar en el último mes:
java.lang.IllegalArgumentException: parameter must be a descendant of this view
at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:4479)
at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:4416)
at android.view.ViewRootImpl.scrollToRectOrFocus(ViewRootImpl.java:2656)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2300)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2249)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1882)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1009)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5508)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:532)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:5225)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(NativeStart.java)
Después de muchas excavaciones y pruebas, descubrí que el problema se introdujo el 27 de octubre después de actualizar App libat lib ( android-support-v7-appcompat
). La última versión de Appcompat no parece resolver este problema.
Supongo que el problema no está relacionado con errores similares (como esta pregunta ) porque he aislado el compromiso que introdujo el problema en mi repositorio y es el que contiene la actualización de Appcompat.
¿Alguna pista sobre esto? ¿Alguien con el mismo problema por ahí?
Creo que sería mejor usar una vista de desplazamiento simple. Definitivamente solucionaría tu problema.
Debes probar lo siguiente en XML :
android:descendantFocusability="beforeDescendants"
por lo general, en ListView
hay un método llamado offsetRectBetweenParentAndChild()
que tiene el trabajo de reciclar las vistas en el desplazamiento y este método generalmente lanza esta excepción.
La mejor respuesta a esta pregunta es
Agregue un ScrollListener a su actividad, cuando listView comience a desplazarse, borre el enfoque actual.
que encontré en esta pregunta.
Por favor revísalo y hazme saber si hay otros problemas.