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 { }
欢迎任何更好的解决方案!
我的约束布局中的所有视图都有 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 { }
欢迎任何更好的解决方案!