2012-02-27 2 views
3

У меня есть макет, который относительно позиционирован. В ней я получил (сейчас) две вещи:Почему кнопка нажата, когда на нее накладывается другой макет?

  • интерактивными Button, который привязан к OnClick-Event
  • A LinearLayout который наложенными на весь экран

Хотя LinearLayout является накладывая кнопку, кнопка все еще доступна для клика. Даже если в оверлее есть еще одна кнопка.

Как этого избежать?

ответ

2

Хорошо я нашел подход, который работает вместе с анимацией:

The Layout (укороченный):

<RelativeLayout ...> 
    <Button ... /> 
    <LinearLayout android:id="@+id/underlay" android:background="#00ffffff" /> 
    <LinearLayout android:id="@+id/overlay" ... /> 
</RelativeLayout> 

Теперь, когда выцветания В «наложения» это, кажется, лучше иметь невидимый " подложка», который сразу же положить VISIBLE:

LinearLayout underlay = (LinearLayout)findViewById(R.id.underlay); 
underlay.setVisibility(View.VISIBLE); 
underlay.setOnClickListener(...); 
//now animate the overlay 
8

Наложение наложения (и макеты) должно реализовывать прослушиватель onClick, чтобы поймать событие, иначе событие будет отправлено на подстилающие виды.

+1

Это то, что я пытался, но он не сделал изменения: [' code'] (sidebar.setOnClickListener (новый OnClickListener() { \t \t \t \t \t \t @Override \t \t \t общественного недействительными OnClick (Просмотр v) { \t \t \t \t // TODO автоматическая генерация метод заглушки \t \t \t \t \t \t \t} \t \t}) ;) – androidavid

+0

mmm, прослушиватель onTouch будет работать тогда (если ваш onTouch реализация возвращает true). –

+0

Хорошо, кажется, что это НЕ работает при анимации ... нужно сделать обходной путь с невидимым за – androidavid