关于fragment点击能穿透问题

本人在做项目的过程中遇到的这个问题,然后就在网上百度了一下,之后也是在csdn上看到博友发过此类问题的解决的方法,所以特此又一次总结一下。顺便也给自己提个醒,避免出现此类问题。好!

以下我们说一下问题:


举例:当我们建立一个fragment A的时候须要点击跳转到fragment B中,为了返回时不又一次载入fragment A所以我们会使用add的方法来讲fragment A增加到后退栈中。


当在fragment B中点击一个空白区域。恰好空白区域相相应的位置在fragment A中有相应的控件,则fragment A会响应到点击事件。有的时候还是fragmentB和fragment A重叠到一起显示(fragmentB透明)


以下解决重叠到一起的问题:

仅仅要在fragment的布局文件的根节点设置一下background就能够了,除了trasparent外都能够使两个fragment不在重叠显示到一起了。


以下一个点击能穿透的问题:

仅仅要我们在fragment中重写View.OnTouchListener的OnTouch方法(当然fragment要实现OnTouchListener监听)。将返回值设置为true。

@Override
	public boolean onTouch(View v, MotionEvent event) {
		return true;
	}
原因:

Fragment是存在于Activity的碎片,所以Fragment的onTouch的方法有时候不能全然的响应到或者根本就不可能响应到。所有让Activity给拦截掉了,假设这样。我们有一种比較保守的解决方法。就是再加入一步操作,在onCreateView方法中的view里面加入OnTouchListener,这样就能让fragment点击的时候不再穿透到上一层的fragment中去了,直接在当前的fragment层给消化掉了。

@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.activity_bs_bookstore, null);
		view.setOnTouchListener(this);
}




原文地址:https://www.cnblogs.com/lytwajue/p/6789698.html