Подтвердить что ты не робот

Appomppat "java.lang.IllegalArgumentException: параметр должен быть потомком этого представления" в ViewGroup.offsetRectBetweenParentAndChild

Я испытываю эту проблему случайно в течение последнего месяца:

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)

После большого количества копания и тестов я понял, что проблема была введена 27 октября после обновления Appcompat lib (android-support-v7-appcompat). Последняя версия Appcompat, похоже, не решает эту проблему.

Я полагаю, что проблема не связана с подобными ошибками (например, этот вопрос), потому что я изолировал коммит, который представил проблему на моем репо, и это который содержит обновление Appompat.

Какой-нибудь ключ к этому? Кто-нибудь с той же проблемой?

4b9b3361

Ответ 1

Вы должны попробовать следующее в XML:

android:descendantFocusability="beforeDescendants"

Ответ 2

обычно на ListView существует метод с именем offsetRectBetweenParentAndChild(), у которого есть работа по переработке просмотров на прокрутке, и этот метод обычно генерирует это исключение.

лучший ответ на этот вопрос -

Добавьте ScrollListener в свою активность, когда listView начнет прокрутку, очистите текущий фокус.

который я нашел в этом вопросе.

пожалуйста, проверьте это и дайте мне знать, если есть другие проблемы.

Ответ 3

Вы пытались правильно настроить Focusability на вашем представлении?:

mYourView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);

или в формате XML

android:descendantFocusability="blocksDescendants"