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

问题描述 投票:0回答:1

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

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

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

android kotlin android-view android-constraintlayout android-viewtreeobserver
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])
                        //1584 constraint
                    }
                }
            })
        }

        wordtxt15.afterMeasured { }

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

© www.soinside.com 2019 - 2024. All rights reserved.