2014-10-29 97 views
1

我使用框架佈局和線性佈局覆蓋,當點擊覆蓋,所以按鈕點擊監聽器也被調用,請讓我知道如何處理這個。如何禁用點擊監聽按鈕,如果有重疊

<LinearLayout 
    android:id="@+id/logLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:background="@color/transparentBlack" 
    android:orientation="vertical" > 


    <com.valspals.classes.ButtonStyleM700 
      android:id="@+id/logDone" 
      android:layout_width="325dp" 
      android:layout_height="35dp" 
      android:layout_gravity="center" 

      android:layout_marginTop="25sp" 

      android:background="@drawable/btn_confirm_normal" 
      android:text="@string/iamdone" 
      android:textColor="@color/White" 
      android:textSize="@dimen/normalTextSize" /> 


    <com.valspals.classes.ButtonStyleM700 
      android:id="@+id/woops" 
      android:layout_width="325dp" 
      android:layout_height="35dp" 
      android:layout_gravity="center" 

      android:layout_marginTop="15sp" 
      android:layout_marginBottom="25dp" 
      android:background="@drawable/btn_confirm_normal" 
      android:text="@string/woops" 
      android:textColor="@color/White" 
      android:textSize="@dimen/normalTextSize" /> 



</LinearLayout> 

上面有這個框架佈局,基本上它是一個父佈局。在這個佈局的後面,我有兩個按鈕,問題是他們是可以從這個線性佈局覆蓋點擊可以

+0

你能爲這個問題發表一些代碼嗎? – 2014-10-29 14:46:42

+0

好吧,讓我編輯。 – 2014-10-29 14:52:12

回答

1

有幾個選項可以用於此。最簡單的方法是設置一個全局變量並在調用onClick時檢查它。

即你有boolean overlayShowing = false;

在事件偵聽器,只需檢查!overlayShowing

然而,這將仍然允許按鈕的點擊動畫顯示。如果您想要防止這種情況發生,您可以攔截頂部佈局(您的FrameLayout)上的觸摸事件,並在疊加層可見時阻止它們傳遞到下面的佈局。

例如在你重寫的FrameLayout:

@Override 
public boolean onInterceptTouchEvent(MotionEvent e){ 
    return overlayShowing; 
} 

這將攔截觸摸事件,並防止它通過它上鍊時,疊加顯示。

如果只通過切換視圖的可見性來顯示覆蓋圖,則可以通過檢查onInterceptTouchEvent()方法中FrameLayout的可見性來進一步簡化。例如

@Override 
public boolean onInterceptTouchEvent(MotionEvent e){ 
    return getVisibility() == View.VISIBLE; 
}