2011-06-04 69 views

回答

10

我會創建一個ViewGroup,其中包含要同時啓用/禁用的所有視圖,並請setClickable(true/false)來啓用/禁用單擊。

+1

而通過的ViewGroup我指的是一個子類。檢查這個[鏈接](http://developer.android.com/reference/android/view/ViewGroup.html) – khellang 2011-06-04 19:36:42

2

在您的活動中創建布爾clickEnabled並在點擊偵聽器中檢查它;如果它是假的,不要做任何事情。

-2

我會在您的活動課中實施onClickListener界面,並在onClick方法中返回false。我覺得這是解決你的問題最簡單的方法。

+9

onClick的返回類型是void – amiekuser 2013-06-13 12:00:32

28

您可以通過View禁用所有兒童點擊事件。

public static void enableDisableView(View view, boolean enabled) { 
     view.setEnabled(enabled); 
     if (view instanceof ViewGroup) { 
      ViewGroup group = (ViewGroup)view; 

      for (int idx = 0 ; idx < group.getChildCount() ; idx++) { 
       enableDisableView(group.getChildAt(idx), enabled); 
      } 
     } 
    } 
+0

@FARID pass enableDisableView(linView,false);它應該工作 – 2017-06-05 06:11:25

+0

工作就像一個魅力。測試在https://github.com/roughike/BottomBar禁用標籤 – 2017-11-23 08:43:59

+0

@ Mr.Robot享受朋友快樂編碼。 :) – 2017-11-24 09:46:12

17

而不是通過所有的兒童觀迭代,你可以將此功能添加到父版式視圖

@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 
    return true; 
} 

這將onTouchEvent任何子視圖之前被調用,如果返回true ,子視圖的onTouchEvent根本不會被調用。如果需要,可以創建一個布爾型字段成員來打開和關閉此狀態。

+0

perfekt答案!謝謝! – Georg 2015-05-20 08:52:21

3

您需要在視圖上調用setEnabled(boolean value)方法。

view.setClickable(false); 
view.setEnabled(false); 
+4

不適合我,孩子們仍然有行動 – jose920405 2016-09-23 22:24:15