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); 
  • Cómo WebView.getTitle () de un hilo de interfaz de usuario?
  • Almacenamiento de un WebView para la navegación sin conexión
  • Android JS en WebView.loadUrl ()
  • La vista web de Android o el navegador no borran las cookies de sesión en el reinicio del dispositivo
  • Android ICS con problemas de compatibilidad con JQuery Mobile1.0
  • Cómo ocultar el teclado cuando el usuario hace clic en el cuadro de texto en la vista web android
  • Configuración de Url a un WebView
  • Webview no puede aceptar cookies
  • Detectar webview en Android con Javascript
  • Convertir un sitio web en una aplicación de Android
  • ¿Qué significa "instalar plugin de Flash" en WebView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.