2012-05-07 15 views
6

Mi pregunta es simple: ¿cómo desactivar cualquier evento en una vista en Android? (incluida la eliminación de su capacidad de enfoque, como si solo quisiera que estuviese allí visualmente, pero inexistente en todo lo demás) ¿Y funciona en un árbol de vista completa? (como si desactivo eventos en la raíz, todos los eventos se desactivarán para sus hijos).Cómo deshabilitar cualquier evento en una vista en Android?

Ahora, antes de decir nada he intentado todo lo siguiente:

Y ninguno de estos métodos parece funcionar, en serio.

Los he probado directamente en un WebView, así como en el diseño principal de todo, pero todavía puedo interactuar con él.

¿Alguna idea?

Gracias!

editar # 1

La solución que consiste en añadir una vista en la parte superior de la opinión de que tiene que ser desactivado no funciona. En realidad, todavía es posible hacer clic en la vista interior, he tratado con un ejemplo sencillo:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:background="#ff0000"> 
     <Button 
      android:id="@+id/button" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:text="Click Me!" 
     /> 
    </LinearLayout> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#00000000" 
    /> 
</FrameLayout> 

Aquí todavía es posible hacer clic en el button.

editar # 2

La razón por la que quiero hacer esto está relacionado con la following question que pedí hace semanas.

Lo que tengo es un ListView que actúa como una barra de navegación que está debajo de un View que contiene el contenido de mi aplicación. El problema con esta implementación es que cuando trato de desplazarme por el ListView cuando hay una vista enfocable en la capa encima, el ListView no se desplaza y en su lugar es la vista superior que toma el foco (ese es el caso cuando hay un Webview o un EditText etc.).

Así que sí como se menciona en una de las respuestas, puede inhabilitar los eventos de clic en un WebView anulando setOnTouchListener pero la vista permanece centrado y creo que esta es la razón por la que sigo teniendo el mismo problema con mi barra de navegación .

Respuesta

5

Simplemente ponga una vista en la parte superior de su vista. Puede activarlo configurando view.visibility = gone/visible.

<FrameLayout> 
<WebView/> 
<FrameLayout This view will be on top/> 
</FrameLayout> 

Editar: Sólo stumpled en este enlace: https://stackoverflow.com/a/3856199/969325 desactiva Básicamente todo caso táctil para la vista web. ¿Has intentado eso?

Editar 2 reediciones: Intente configurar la visibilidad para la vista superior debajo de su vista de lista.

+0

¡No quiero que desaparezca! Solo quiero desactivar cualquier evento (como clics) en él ... –

+0

@AmokraneChentir simplemente hazlo transparente ... android: background = "android: color/transparent" <- si existe, de lo contrario crea tu propio color transparente – Warpzit

+0

Oh, ok, no leí tu respuesta correctamente. Bueno, en realidad, incluso con otra vista en la parte superior, todavía puedo hacer clic en la vista interna. –

Cuestiones relacionadas