我有一个view
,我想在点击按钮/布局时显示它,并在我触摸其他位置时隐藏它。我该怎么做? 我在dispatchTouchEvent(Motion Event)
中写了一些代码,它正在工作。但是,我认为必须有另一种方式来做到这一点。如何在外部触摸事件中隐藏recyclerview?
回答
您可以用另一个可点击的视图填充RecyclerView的外部,并为该视图实现setOnTouchListener方法。这里有一个例子:
比方说,我们已经在我们的RelativeLayout的顶部有RecyclerView:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="300dp"
android:scrollbars="vertical" />
<!--View below is just to fill the remaining space. We will use this view to catch outside touch-->
<View
android:id="@+id/outside_detector"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/recyclerView"
android:clickable="true"
android:focusable="true"/>
</RelativeLayout>
我们想隐藏和显示我们的recyclerview当我们点击RecyclerView之外:
((View) findViewById(R.id.outside_detector)).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if(arg1.getAction() == MotionEvent.ACTION_DOWN){
if(recyclerView.getVisibility() == View.VISIBLE){
recyclerView.setVisibility(View.INVISIBLE);
}else{
recyclerView.setVisibility(View.VISIBLE);
}
}
return true;
}
});
如果你想在按钮点击时显示recyclerview,那么只需在按钮ClickListener中写入recyclerView.setVisibility(View.VISIBLE)
方法!
希望这会有所帮助!
thaks并不重要,但是如果我在这个'RelativeLayout'中有很多视图,为了更容易的拦截事件创建一个'view',是否正确? –
对不起,我没有明白。你介意澄清你说的话吗? – Umarov
我认为创建'view'可能会有一些副作用 –
- 1. Recyclerview触摸事件
- 2. 用户触摸屏幕(外部)时如何隐藏对话框?
- 3. 触摸事件(onClickListener)不触发recyclerView
- 4. 触摸事件后重绘RecyclerView
- 5. 触摸内部视图和外部按钮时触发事件
- 6. 当触摸外部时,ShowCaseView不会隐藏
- 7. 在UITableViewController中隐藏UIPickerView而在外面触摸
- 8. 如何在触摸对话框外触碰事件?
- 9. 隐藏按钮和触摸
- 10. 如何隐藏recyclerview顶部布局viewpager
- 11. RecyclerView项目选择以及如何禁用触摸事件
- 12. trigger.io - 触摸/点击事件时隐藏html元素
- 13. 显示和隐藏Sencha触摸导航视图的事件
- 14. 如何在RecyclerView中隐藏视图
- 15. 触摸事件
- 16. 隐藏光标在铬触摸屏亭
- 17. 如何在UIBarButtonItem的动作中触发隐藏的UIButton事件
- 18. 如何触发触摸事件?
- 19. 如何隐藏整个RecyclerView?
- 20. C#,WPF在代码隐藏中订阅外部事件
- 21. 如何从外部触发d3事件
- 22. 如何在触摸事件上画线?
- 23. 当用户在UIView之外触摸时,如何处理事件?
- 24. 如何在对话框外触摸时捕捉事件
- 25. 如何在视图之外获取触摸事件
- 26. BottomSheet正在拦截来自RecyclerView的触摸事件
- 27. RecyclerView隐藏LinearLayout
- 28. 事件触摸屏轻轻触摸
- 29. 在UIView上触摸事件
- 30. 在UITableView上触摸事件?
你用“RecyclerView查看”是什么意思?你的意思是recyclerView的一个项目吗? – Umarov
这意味着RecyclerView里面的视图,在这种情况下,我认为 –