当前位置: 首页 > 知识库问答 >
问题:

请求布局() 调用不正确

蒋培
2023-03-14

我在我的控制台上收到垃圾警告。我能找到的唯一信息是,大多数人在列表视图中启用快速滚动时会得到它。我没有使用任何列表视图。它说它被CollapsingToolbarLayout,AppCompatTextView,Toolbar,有时是AppBarLayout错误地调用。每当我快速上下“投掷”嵌套滚动视图以折叠和展开工具栏时,就会发生这种情况。

日志:

06-30 22:18:42.622 19090-19090/? I/art: Not late-enabling -Xcheck:jni (already on)
06-30 22:18:43.153 19090-19090/joebruckner.lastpick.debug D/MovieShuffleActivity: false, true, false
06-30 22:18:43.205 19090-19126/joebruckner.lastpick.debug D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true

                                                                            [ 06-30 22:18:43.267 19090:19126 D/         ]
                                                                            HostConnection::get() New Host Connection established 0xea95fdb0, tid 19126
06-30 22:18:43.287 19090-19126/joebruckner.lastpick.debug I/OpenGLRenderer: Initialized EGL, version 1.4
06-30 22:18:43.806 19090-19090/joebruckner.lastpick.debug D/MovieShuffleActivity: false, true, true
06-30 22:28:49.264 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ......ID 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during layout: running second layout pass
06-30 22:28:49.264 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.v7.widget.Toolbar{612299e V.E...... ......ID 0,291-1080,438 #7f0d0069 app:id/toolbar} during layout: running second layout pass
06-30 22:28:49.277 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ........ 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during second layout pass: posting in next frame
06-30 22:28:49.456 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ......ID 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during layout: running second layout pass
06-30 22:28:49.456 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.v7.widget.Toolbar{612299e V.E...... ......ID 0,197-1080,344 #7f0d0069 app:id/toolbar} during layout: running second layout pass
06-30 22:28:49.475 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ........ 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during second layout pass: posting in next frame
06-30 22:28:49.696 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ......ID 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during layout: running second layout pass
06-30 22:28:49.696 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.v7.widget.Toolbar{612299e V.E...... ......ID 0,0-1080,147 #7f0d0069 app:id/toolbar} during layout: running second layout pass
06-30 22:28:49.741 19090-19090/joebruckner.lastpick.debug W/View: requestLayout() improperly called by android.support.design.widget.CollapsingToolbarLayout{5041bd9 V.ED..... ........ 0,0-1080,525 #7f0d0074 app:id/collapsingToolbar} during second layout pass: posting in next frame

xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/appBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsingToolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:contentScrim="?attr/colorPrimary"
            app:titleEnabled="false"
            android:fitsSystemWindows="true">

            <ImageView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:contentDescription="@string/backdrop"
                android:scaleType="fitXY"  />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"/>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <FrameLayout
        android:id="@+id/frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/appBar"
        app:layout_behavior="@string/scrolling_view"
        app:behavior_overlapTop="80dp"
        />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:src="@drawable/ic_dice_three_48dp"
        app:layout_anchor="@+id/frame"
        app:layout_anchorGravity="bottom|end"
        />
</android.support.design.widget.CoordinatorLayout>

共有3个答案

戴嘉珍
2023-03-14

此消息仅用于警告某些视图已请求布局,而其他视图(在本例中为ToolbarCollapsingToolbarLayout)已在布局阶段请求布局。

在某些情况下,这会导致性能缺陷。您应该确定:

>

  • 您是否有一些在滚动期间调用requestLayout()的自定义视图/视图组?您是否有其他调用 requestLayout() 的代码?您是否有任何代码可以执行广泛的布局子层次结构更改,例如使视图消失

    这是什么时候发生的?是不是只是在开始,就在所有视图都布置之前?

    你有可疑的视图,不正确地调用requestLayout(),你需要找到谁,何时以及为什么之前进行布局重组。

  • 姚麒
    2023-03-14

    您是否正在设置任何 AppBarLayout.OnOffsetChangedListener?如果是这样,这可能是由于布局参数归因或侦听器中此类型的任何设置值导致的。

    如果是这种情况,请在主线程中设置布局属性

    appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
            @Override
            public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
    
               //post message back on main thread if you need to modify any views
            }
        });
    
    毕衡
    2023-03-14

    我的解决方案是仅在偏移更改不同时才转发它们

           appbar.addOnOffsetChangedListener(object : AppBarLayout.OnOffsetChangedListener {
            var lastOffset = -1
            override fun onOffsetChanged(appBarLayout: AppBarLayout?, verticalOffset: Int) {
                if (lastOffset == verticalOffset) return
    
                lastOffset = verticalOffset
                val percentage = Math.abs(verticalOffset).toFloat() / (appBarLayout?.totalScrollRange?.toFloat() ?: 1f)
                toolbarAnimation.animate(percentage)
            }
        })
    
     类似资料:
    • 好的,我有一个面板,我想在上面放置两个面板,左面板和右面板,这样右面板的宽度应该是左侧面板的两倍。 我想在左侧面板中添加一个菜单,所选项目的详细信息将出现在右侧面板中。 其次,当窗口扩展时,面板及其组件的大小应成比例增加(如果可以使用任何方法,请建议!) 我确实尝试过使用GridBagLayout,但我认为我还没有很好地掌握它。因此,请建议最简单的布局管理器,可以满足我的目的。 编辑:-我用GRI

    • 我正在尝试数据发送到远程AWS API。 数据应该是部分上的。 使用邮递员,我可以发送数据,一切都正常工作: 现在,为了使用,我正在执行以下操作: 请求成功,但没有数据更新!好像没有收到一样。 我无法访问远程API日志文件。 所以我的问题是,这是在Guzzle请求的主体部分发布数据的正确方法吗? 谢了。

    • 我已经在我的网站上使用了最新的woocommerce插件。我使用enfold主题为我的网站。但我不知道为什么我的产品页面结构断裂或显示不正确的其他。 产品图库thumb不工作(所有图像都以100%宽度显示,产品图像没有轮播) 我无法设置侧栏 这是enfold主题的问题还是其他什么问题?

    • 正常流布局的规则是将组件从左到右放置,当一行的空间被占满后则会换到下一行继续放置剩下的组件。默认情况下,一个块级组件的宽度是其父组件的100%,其高度与其内容高度一致,而内联块级组件的宽高则与内容一致。 与网页布局的差异: 没有 inline 显示方式:LCUI 的布局引擎在设计之初就没有考虑支持基于文本的布局,因为实现比较复杂,需要耗费较多的时间和精力去开发和维护,而且当时并没有复杂的文本排版需

    • > < li> 我在CollapsingToolbarLayout中有一个imageview,它是AppBarLayout的一部分,如下所示。每当我尝试从imageview开始滚动内容时,它从不滚动,但当我从recycle view/nested scroll view滚动时,它会滚动内容。这是CoordinatorLayout的预期行为吗?如果我想滚动内容,即imageview和我的recycl

    • 我在将工作cURL调用转换为内部API到python请求调用时遇到了一个问题。 以下是工作旋度调用: 然后,我试图将该调用转换为一个工作python请求脚本在这里: 我得到一个HTTP 401或500错误,这取决于我如何更改headers变量。我不明白的是,我的python请求与cURL请求有何不同。它们都作为同一用户从同一台服务器上运行。 任何帮助都将不胜感激