Android kotlin 检查任何视图改变大小时是否有视图滑出屏幕

Android kotlin Check if any view slides out of screen when any view changes size

我的约束布局中的所有视图都有 layout_height 作为 wrap_content。我的第一个视图是从下到下受限于约束布局。下一个是从下到上受限于上一个,依此类推。我的约束布局也有 layout_height 和 wrap_content。我想检查当它们中的任何一个在单击时动态设置文本时,我的任何视图是否完全或部分滑出屏幕。

         fun <T : View> T.afterMeasured( f: T.() -> Unit) {
            viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
                override fun onGlobalLayout() {
                    if (measuredWidth > 0 && measuredHeight > 0) {
                        println(height)
                    }
                }
            })
        }
        MyConstraintLayout.afterMeasured { }

每次在视图中设置文本时,我都尝试使用这个有趣的方法来检查约束布局高度,但即使任何视图滑出屏幕,打印的高度也是屏幕高度。

当任何视图的高度发生变化时,检查是否有任何视图滑出屏幕有什么好玩的?

解决方法是将 afterMeasured 放在我的最后一个视图上,而不是高度获取屏幕上的位置。

         fun <T : View> T.afterMeasured( f: T.() -> Unit) {
            viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
                override fun onGlobalLayout() {
                    if (measuredWidth > 0 && measuredHeight > 0) {
                        var coordinate= intArrayOf(1,2)
                        getLocationOnScreen(coordinate)
                        println(coordinate[1])
                    }
                }
            })
        }

        wordtxt15.afterMeasured { }

欢迎任何更好的解决方案!