我有一个可水平滚动的 recyclerView,当在任何地方触摸 recyclerView 时,应该发生下拉列表。我已经尝试了很多方法,比如 onclick,但没有奏效。唯一有效的是onTouchListener,但是在实现滚动不起作用之后。
这是 recyclerView 代码
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_selected_groups"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginStart="16dp"
android:clickable="true"
android:layout_marginTop="0dp"
android:orientation="horizontal"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingBottom="8dp"
android:paddingTop="8dp"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/iv_dropdown"
app:layout_constraintTop_toBottomOf="@id/tv_select_group"
android:focusable="true" />
Run Code Online (Sandbox Code Playgroud)
这是使用的 onTouchListener 的代码
mRecyclerViewSeletedGroups.setOnTouchListener(View.OnTouchListener { view, motionEvent ->
when (motionEvent.action){
MotionEvent.ACTION_UP -> {
dropdownFlag = !dropdownFlag
mPresenterImpl.onDropdownClicked(dropdownFlag)
}
}
return@OnTouchListener true
})
Run Code Online (Sandbox Code Playgroud)
因此,当我尝试使用 onclick 而不是 onTouch 时,它不起作用。
我想实现 onTouch 以及滚动应该工作。
我该如何解决这个问题?
问题出在你的:
return@OnTouchListener true
Run Code Online (Sandbox Code Playgroud)
如果你总是返回 true 这意味着:
如果侦听器已经消费了事件,则为真,否则为假。
如果您总是使用该事件,则您的滚动条将不起作用。您需要检查逻辑以仅在需要时返回true。
| 归档时间: |
|
| 查看次数: |
1524 次 |
| 最近记录: |