Android WebView dentro de los problemas de eventos de ListView onclick

Tengo un ListView donde cada fila tiene dos webviews lado a lado, ocupando toda la fila. He configurado onListItemClick () en mi ListActivity, pero no se disparan cuando toco una de las filas (a menos que el lugar en el que toque toque esté fuera del borde de la webview), pero esto no es probable, Probablemente desee tocar la imagen dentro de la webview).

He intentado establecer setFocusable (false) y setFocusableInTouchMode (false), pero los que no ayudan.

Lo ideal sería que funcionara exactamente como la fuente de noticias de Facebook, donde se puede tocar en la foto de perfil de la publicación de alguien de pared y actúa como si usted ha tocado toda la fila (en el caso de FBs el texto para el poste de la pared)

Lo deduje, publicando mi solución en caso de que alguien más quiera hacer algo similar:

Tuve que usar un OnTouchListener, ya que OnClick y OnFocus no estaban funcionando. He extendido una clase que es reutilizable:

private class WebViewClickListener implements View.OnTouchListener { private int position; private ViewGroup vg; private WebView wv; public WebViewClickListener(WebView wv, ViewGroup vg, int position) { this.vg = vg; this.position = position; this.wv = wv; } public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_CANCEL: return true; case MotionEvent.ACTION_UP: sendClick(); return true; } return false; } public void sendClick() { ListView lv = (ListView) vg; lv.performItemClick(wv, position, 0); } } 

El método sendClick podría ser reemplazado para hacer lo que se necesita en su caso específico. Caso de uso:

 WebView image = (WebView) findViewById(R.id.myImage); image.setOnTouchListener(new WebViewClickListener(image, parent, position)); 

Me las arreglé para conseguir este trabajo con lo siguiente:

 class NoClickWebView extends WebView { public NoClickWebView(Context context) { super(context); setClickable(false); setLongClickable(false); setFocusable(false); setFocusableInTouchMode(false); } } 

Puede usar esta clase o simplemente establecer estas propiedades en un WebView estándar.

Tengo que trabajar en Android 4.4 utilizando el mismo enfoque que bjdodson anterior, pero también sobreponiendo a dispatchTouchEvent

 public class NonClickableWebview extends WebView { public NonClickableWebview(Context context, AttributeSet attrs) { super(context, attrs); setClickable(false); setLongClickable(false); setFocusable(false); setFocusableInTouchMode(false); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { return false; } } 

Configuración a la disposición principal de cada WebView:

 android:descendantFocusability="blocksDescendants" android:layout_width="match_parent" android:layout_height="wrap_content" 

Acabo de probar lo que se sugiere en este post WebView dentro de la lista personalizada: Click Listener no funciona , no sé por qué, pero si se establece estas características en el XML que no parecen funcionar. Hacer esto de forma dinámica le permite hacer clic en el elemento de vista de lista =)

Yo estaba usando el siguiente diseño en ListView y estaba funcionando perfectamente, es decir, su clic, desplazamiento y así sucesivamente.

 TextView1 ImageView1 TextView2 ImageView2 TextView3 

Luego he cambiado el diseño con el siguiente, es decir, he agregado con el control de WebView en la esquina más izquierda en lugar de ImageView1

 TextView1 WebView TextView2 ImageView2 TextView3 

Después de hacer esto, hacer clic no funcionaba para mí.

Resuelvo este problema añadiendo esto a la vista Web:

 webView.setFocusable(false); webView.setClickable(false); 
  • Webview dentro del listview: conflictos de eventos táctiles Por lo tanto no puede pellizcar Zoom IN / OUT en android
  • Detección de cambios de selección en WebView
  • Navegador para Android WebView VS
  • Android Webview no puede centrarse en sus elementos
  • Evento "reproducir video" en Android WebView
  • ¿Android WebView no carga URL?
  • JavaScript createObjectURL no funciona en el navegador de Android
  • Desactivación nativa de WebView: libwebviewchromium.so "Operación no permitida" - ILL_ILLOPC
  • Cómo administrar la autenticación básica en WebView
  • ¿Por qué Bitmap a Base64 Cadena que muestra el fondo negro en webview en android?
  • La sincronización bidireccional para las cookies entre HttpURLConnection (java.net.CookieManager) y WebView (android.webkit.CookieManager)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.