0

我的约束布局中的所有视图都将 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 { }

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

当任何视图中的高度发生变化时,我可以用什么来检查是否有任何视图滑出屏幕?

4

1 回答 1

0

通过将 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 { }

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

于 2019-12-09T21:26:05.377 回答