Почему кнопка нажимается, когда на нее накладывается другой макет? - PullRequest
3 голосов
/ 28 февраля 2012

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

  • нажимаемая кнопка, которая связана с событием onClick
  • LinearLayout, который перекрывает весь экран

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

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

Ответы [ 2 ]

8 голосов
/ 28 февраля 2012

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

3 голосов
/ 28 февраля 2012

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

Макет (укороченный):

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

Теперь, когда Fading In "overlay", кажется, лучше всего иметь невидимую "underlay", которая немедленно помещается в VISIBLE:

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