2014-10-29 2 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

Можете ли вы разместить код для этого вопроса? –

+0

okay позвольте мне изменить. –

ответ

1

Существует несколько вариантов, которые вы могли бы использовать для этого. Самый простой способ - установить глобальную переменную и проверить ее при вызове onClick.

т.е. у вас есть boolean overlayShowing = false;

В прослушивателя событий, просто проверить !overlayShowing

Однако, это все же позволит нажмите анимация кнопки, чтобы показать. Если вы также хотите предотвратить это, вы можете перехватить события касания на верхнем макете (ваш FrameLayout) и не дать им перейти к приведенным ниже макетам, если наложение будет видимым.

например. В вашей перегруженной FrameLayout:

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

Это будет перехватывать сенсорное событие и предотвратить его передачу его на цепи, когда наложение показывает.

Если ваш оверлей показан только при переключении видимости View, вы можете упростить это еще раз, проверив видимость FrameLayout в методе onInterceptTouchEvent(). например

@Override 
public boolean onInterceptTouchEvent(MotionEvent e){ 
    return getVisibility() == View.VISIBLE; 
} 
Смежные вопросы