为什么将FrameLayout $ LayoutParams渲染为ViewPager $ LayoutParams?

问题描述

我正在使用ViewPager

   <androidx.viewpager.widget.ViewPager
            android:id="@+id/view_pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clipChildren="false"
            app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />

我的片段xml看起来像:

<?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>

    </data>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/frameParent">      
    </FrameLayout>
 </layout>

当我致电layoutParams以更改边距时

 val params = frameParent.layoutParams  as ViewGroup.MarginLayoutParams

我遇到了例外情况:

java.lang.classCastException: androidx.viewpager.widget.ViewPager$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams

完整错误

Process: xx.xx.xx,PID: 28634
java.lang.classCastException: androidx.viewpager.widget.ViewPager$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams
    at xx.xx.xx.fragments.ArticleDetailsFragment.setNewMarginAnimated(ArticleDetailsFragment.kt:200)
    at xx.xx.xx.fragments.ArticleDetailsFragment$onCreateView$8.onScrollChanged(ArticleDetailsFragment.kt:175)
    at xx.xx.xx.view.ObservableScrollView.onScrollChanged(ObservableScrollView.kt:19)
    at android.view.View.scrollTo(View.java:13587)
    at androidx.core.widget.nestedScrollView.onOverScrolled(nestedScrollView.java:1056)
    at androidx.core.widget.nestedScrollView.overScrollByCompat(nestedScrollView.java:1112)
    at androidx.core.widget.nestedScrollView.onTouchEvent(nestedScrollView.java:905)
    at android.view.View.dispatchTouchEvent(View.java:10197)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2759)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2384)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2765)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2398)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2765)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2398)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2765)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2398)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2765)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2398)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2765)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2398)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2765)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2398)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2765)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2398)
    at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2765)
    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2398)
    at com.android.internal.policy.DecorView.superdispatchTouchEvent(DecorView.java:460)
    at com.android.internal.policy.PhoneWindow.superdispatchTouchEvent(PhoneWindow.java:1838)
    at android.app.Activity.dispatchTouchEvent(Activity.java:3190)
    at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
    at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
    at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:414)
    at android.view.View.dispatchPointerEvent(View.java:10428)
    at android.view.ViewRootImpl$ViewPostImeInputStage.processpointerEvent(ViewRootImpl.java:5339)
    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5100)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4561)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4621)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4580)
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4749)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4588)
    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4806)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4561)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4621)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4580)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4588)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4561)
    at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7292)
    at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7266)
    at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7209)
    at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7468)
    at android.view.ViewRootImpl$ColorWindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9017)
    at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
    at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
    at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176)
    at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:7423)
    at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:7494)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:914)
    at android.view.Choreographer.doCallbacks(Choreographer.java:716)
    at android.view.Choreographer.doFrame(Choreographer.java:644)
    at android.view.Choreographer$FramedisplayEventReceiver.run(Choreographer.java:900)
    at android.os.Handler.handleCallback(Handler.java:836)
    at android.os.Handler.dispatchMessage(Handler.java:103)
    at android.os.Looper.loop(Looper.java:232)
    at android.app.ActivityThread.main(ActivityThread.java:6661)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1106)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

这是怎么了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...