關於fragment點擊穿透的重疊顯示解決方法

轉載於 : http://blog.csdn.net/kfuxydnod6/article/details/46906283


本人在做項目的過程中遇到的這個問題,然後就在網上百度了一下,之後也是在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;

[java] view plaincopy
  1. @Override  
  2.     public boolean onTouch(View v, MotionEvent event) {  
  3.         return true;  
  4.     }  
原因:

Fragment是存在於Activity的碎片,所以Fragment的onTouch的方法有時候不能完全的響應到或者根本就不可能響應到,全部讓Activity給攔截掉了,如果這樣,我們有一種比較保守的解決方法,就是再添加一步操作,在onCreateView方法中的view裏面添加OnTouchListener,這樣就能讓fragment點擊的時候不再穿透到上一層的fragment中去了,直接在當前的fragment層給消化掉了。

[java] view plaincopy
  1. @Override  
  2.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
  3.         View view = inflater.inflate(R.layout.activity_bs_bookstore, null);  
  4.         view.setOnTouchListener(this);  
  5. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章