android - 设置填充不会更新视图
问题描述
我正在创建一个由多个框架布局和一个滚动布局组成的自定义视图。滚动视图有一个顶部填充,这个填充应该等于框架布局的组合高度(参见插图)。
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
被调用了两次。第一次调用时,滚动视图的顶部填充已正确设置和更新,但第二次调用时,设置了新的顶部填充,但视图未更新。两次布局更改之间有几秒钟的时间。有谁知道为什么填充没有更新?
解决方案
推荐阅读
- agda - Agda 如何推断 `Vec.foldl` 的隐含参数?
- python - 我在 python 中使用 gspread 模块时遇到了麻烦
- python-3.x - 更新 Pycharm 上的所有包
- azure - 安装后如何管理 nginx-ingress?
- sql - 如何通过比较重复字符串来更新sql记录?
- tensorflow - IndexError:我的 Keras model.fit_generator 中的元组索引超出范围
- python-3.x - 我可以使用什么内置函数来获取python列表中的最后3个元素
- linux - 将同名文件夹分组
- wordpress - 如何在没有用户名或密码的情况下对 WordPress REST 请求进行身份验证?
- rust - 创建自定义形状的 Cairo::Region