首页 > 解决方案 > 设置填充不会更新视图

问题描述

我正在创建一个由多个框架布局和一个滚动布局组成的自定义视图。滚动视图有一个顶部填充,这个填充应该等于框架布局的组合高度(参见插图)。 在此处输入图像描述

       framelayoutA.addOnLayoutChangeListener { v, _, _, _, _, _, _, _, _ ->
        if (v.height == framelayoutAHeight) return@addOnLayoutChangeListener
        framelayoutAHeight = v.height
        framelayoutAGuideline.setGuidelineBegin(framelayoutAHeight)
        framelayoutBGuideline.setGuidelineBegin(framelayoutAHeight)
        val padding = framelayoutAHeight + framelayoutBHeight
        Log.d("ParallaxScrollingView", "framelayoutAHeight = $framelayoutAHeight")
        Log.d("ParallaxScrollingView", "padding = $padding")
        scrollView.setPadding(0, padding, 0, 0)

    }

为了设置这个填充,我需要我进入的框架布局的高度onLayoutChangeListener。我的问题是,framelayout A 的高度被更新了两次,导致onLayoutChangeListener被调用了两次。第一次调用时,滚动视图的顶部填充已正确设置和更新,但第二次调用时,设置了新的顶部填充,但视图未更新。两次布局更改之间有几秒钟的时间。有谁知道为什么填充没有更新?

标签: androidandroid-custom-viewandroid-scrollview

解决方案


推荐阅读