Fragment 坑點之 點擊穿透

前言:

在開發過程種彈出了一個Fragment之後,居然還可以點擊到前一個頁面(activity)的按鈕!!!!!坑!經過各種百度,得知這是因爲Fragment是存在於Activity的碎片,所以Fragment的onTouch的方法有時候不能完全的響應到或者根本就不可能響應到,全部讓Activity給攔截掉了,如果這樣,我們有一種比較保守的解決方法,就是再添加一步操作,在onCreateView方法中的view裏面添加OnTouchListener,這樣就能讓fragment點擊的時候不再穿透到上一層的fragment中去了,直接在當前的fragment層給消化掉了。
我們只要在fragment中重寫View.OnTouchListener的OnTouch方法將返回值改爲true就行了!該方法默認返回的時fase!


例子:

public class LoginFragment extends Fragment implements View.OnTouchListener {


    @BindView(R.id.close_btn)
    ImageButton close_btn;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_loging,container,false);

        ButterKnife.bind(this,view);

        close_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getFragmentManager().popBackStack();
            }
        });

        view.setOnTouchListener(this);
        return view;
    }


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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章