我想为某些 space 滚动触发 OnScrollChangeListener
I want to trigger OnScrollChangeListener for certain space scrolled
我有一个 scrollView 需要在我拖动某个 Y 偏移量时隐藏键盘,目前它总是在我输入编辑文本时关闭我的键盘但是我想做的是执行 hideKeyboard() 例如视图已滚动 Y 单位
binding.scrollView.setOnScrollChangeListener { view, i, i2, i3, i4 ->
hideKeyboard()
}
我想添加这样的条件
binding.scrollView.setOnScrollChangeListener { view, i, i2, i3, i4 ->
if(position_dragged_in_Y > some_value)
hideKeyboard()
}
我该怎么做?谢谢
设置OnScrollChanceListener
时,我得到了以下属性:
scrollview.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
}
因此,OnScrollChangeListener
已经为我们提供了 scrollY 位置的当前位置。要设置条件(if scrollY
>= someYPosition
),您可以在滚动视图中添加一个不可见的视图,如下所示:
<View
android:id="@+id/myInvisibleViewForCondition"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
然后,为了获得我们 myInvisibleViewForCondition
的绝对 Y 位置,我们使用以下扩展函数:
fun View.getLocationOnScreen(): Point {
val location = IntArray(2)
this.getLocationOnScreen(location)
return Point(location[0],location[1])
}
现在我们可以开始处理条件了:
scrollview.setOnScrollChangeListener { _, _, scrollY, _, _ ->
val absolutPositionOfInvisibleView = myInvisibleViewForCondition.getLocationOnScreen()
val yPositionOfInvisibleView = absolutPositionOfInvisibleView.y
if (scrollY > yPositionOfInvisibleView) {
hideKeyboad()
}
}
我无法测试该功能,所以现在让我测试一下,如果可行的话。
干杯
我有一个 scrollView 需要在我拖动某个 Y 偏移量时隐藏键盘,目前它总是在我输入编辑文本时关闭我的键盘但是我想做的是执行 hideKeyboard() 例如视图已滚动 Y 单位
binding.scrollView.setOnScrollChangeListener { view, i, i2, i3, i4 ->
hideKeyboard()
}
我想添加这样的条件
binding.scrollView.setOnScrollChangeListener { view, i, i2, i3, i4 ->
if(position_dragged_in_Y > some_value)
hideKeyboard()
}
我该怎么做?谢谢
设置OnScrollChanceListener
时,我得到了以下属性:
scrollview.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
}
因此,OnScrollChangeListener
已经为我们提供了 scrollY 位置的当前位置。要设置条件(if scrollY
>= someYPosition
),您可以在滚动视图中添加一个不可见的视图,如下所示:
<View
android:id="@+id/myInvisibleViewForCondition"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
然后,为了获得我们 myInvisibleViewForCondition
的绝对 Y 位置,我们使用以下扩展函数:
fun View.getLocationOnScreen(): Point {
val location = IntArray(2)
this.getLocationOnScreen(location)
return Point(location[0],location[1])
}
现在我们可以开始处理条件了:
scrollview.setOnScrollChangeListener { _, _, scrollY, _, _ ->
val absolutPositionOfInvisibleView = myInvisibleViewForCondition.getLocationOnScreen()
val yPositionOfInvisibleView = absolutPositionOfInvisibleView.y
if (scrollY > yPositionOfInvisibleView) {
hideKeyboad()
}
}
我无法测试该功能,所以现在让我测试一下,如果可行的话。
干杯