2015-04-21 3 views
0

У меня есть RelativeLayout и вы хотите отключить любые трогательные события для нижнего слоя, однако поставить android:clickable="true" на верхний уровень не делает трюк. Не могли бы вы взглянуть:android: clickable не работает

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
       <Button 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="lower layer button" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:clickable="true"> 
      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="upper layer button"/> 
     </RelativeLayout> 

</RelativeLayout> 

Я все еще могу нажать обе кнопки. Что может быть неправильным с этой частью кода?

Отредактировано, чтобы сделать вопрос более четким.

ответ

0

Через некоторое время я нашел ответ:

Мой второй слой не перехватывать все трогательные события из-за него был меньше первого слоя. Поэтому даже если требуется андроид: clickable = "true", этого недостаточно. Нижний слой не должен быть больше верхнего. Создание второго размера RelativeLayout наследуемого устранило проблему:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
       <Button 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="lower layer button" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:clickable="true"> 
      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="upper layer button"/> 
     </RelativeLayout> 

</RelativeLayout> 
1

Кнопки по умолчанию можно изменить. Если вы хотите, чтобы кнопка не быть интерактивными, вы должны явно установить свойство ложно:

<!-- this will be clickable --> 
<Button 
    android:id="@+id/btn1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="test test test" 
    android:clickable="true" /> 

<!-- this will not be clickable --> 
<Button 
    android:id="@+id/btn2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:clickable="false" /> 
Смежные вопросы