关于Fragment点击事件穿透的三个解决方案
2017-08-10 23:49
726 查看
关于Fragment点击事件穿透的三个解决方案
方案一:在XML文件的根布局中添加属性android:clickable=”true”
像下面这样<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:clickable="true" android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout>
缺点:需要为每个Fragment的布局文件添加clickable属性,当Fragment数量多时比较麻烦,还可能会忘记。
方案二:在Fragment基类中为创建的View添加触摸监听,并一直返回true。
向下面这样public class BaseFragment extends Fragment implement View.OnTouchListener{ //重写onTouch,并返回true @Override public boolean onTouch(View v, MotionEvent event) { return true; } //为Fragment的根视图添加点击触摸监听 @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.setOnTouchListener(this); } }
好处:无需像方案一一样,向每个布局文件添加clickable属性
坏处:当根布局是ScrollView时,无法滚动,因为触摸事件被吃掉了。
网上查到的解决方案无非上面两种,各有利弊,那有没有既方便又不影响滚动的呢?请看方案三。
方案三:不使用OnTouchListener,而是OnClickListener
public class BaseFragment extends Fragment implement View.OnClickListener{ //重写onTouch,并返回true @Override public void onClick(View v) { } //为Fragment的根视图添加点击触摸监听 @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.setOnClickListener(this); } }
各位看官可以尝试一下。如果还有坑的话欢迎留言讨论。
相关文章推荐
- 关于Fragment叠加点击穿透的解决方案
- 关于fragment点击穿透的重叠显示解决方法
- fragment点击事件穿透问题
- fragment点击事件穿透解决方法
- 关于BUTTON模拟FILE控件的点击事件的一揽子解决方案
- fragment点击事件穿透解决方法
- 关于fragment点击能穿透问题
- fragment点击事件穿透解决方法及原因
- Fragment 点击事件的穿透和重叠bug
- 关于今天在开发中遇到的点击事件穿透问题
- 关于Android中popupwindow的listview的item点击事件无效的解决方案
- Fragment出现点击穿透事件,其他fragment中的控件点击被响应了
- DrawerLayout的使用 侧滑加载Listview,首页使用Fragment和处理点击触摸冲突、穿透事件和监听菜单滑动状态的改变的详细介绍
- Fragment 点击事件的穿透和重叠bug
- 【android】点击事件穿透解决方案
- fragment点击穿透事件触发解决方法
- 关于UGUI挡道3D的物体触发点击事件无法和3D物体分离的解决方案
- 关于listfragment中使用listview的点击事件不响应
- 关于fragment点击能穿透问题
- Fragment出现点击穿透事件,其他fragment中的控件点击被响应了