Cómo agregar una acción de clic para el ImageSpan

Tengo un conjunto ImageSpan en el TextEdit. Y quiero añadir la acción – cuando el usuario haga clic en el ImageSpan, se abrirá un cuadro de diálogo y mostrar la imagen grande.

Comprobé el SDK y parece que ImageSpan no soporta onclick. ¿Hay de todos modos para habilitar el onclick para el ImageSpan u otro Span que soporte la imagen?

Comprobé el código y encontré que hay un URLSpan creado con el ImageSpan porque la cadena de entrada es

Pero parece que el URLSpan no funciona y no hay ninguna acción de clic crear para él. ¿Alguna idea?

Gracias.

He estado tratando de resolver el mismo problema hoy y encontrar la solución. Para hacer que la imagen se haga clic, debe adjuntar un objeto ClickableSpan al mismo rango que ImageSpan para su imagen. Cuando obtiene su objeto Spanned de Html.fromHtml (), puede ir a través del conjunto de objetos ImageSpan asignados para ello y adjuntar el objeto ClickableSpan adicional.

Me gusta esto:

ImageSpan[] image_spans = s.getSpans(0, s.length(), ImageSpan.class); for (ImageSpan span : image_spans) { final String image_src = span.getSource(); final int start = s.getSpanStart(span); final int end = s.getSpanEnd(span); ClickableSpan click_span = new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(HtmlImagesTestActivity.this, "Image Clicked " + image_src, Toast.LENGTH_SHORT).show(); } }; ClickableSpan[] click_spans = s.getSpans(start, end, ClickableSpan.class); if(click_spans.length != 0) { // remove all click spans for(ClickableSpan c_span : click_spans) { s.removeSpan(c_span); } } s.setSpan(click_span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } 

He encontrado el punto clave.Con el fin de la respuesta a la acción del clic, no sólo se establece clickablespan, sino también establecer edittext'setMovementMethod, el código es como este:

 EditText.setMovementMethod(LinkMovementMethod.getInstance()); 

Aquí está el problema. Si establece setMovementMethod en LinkMovementMethod.getInstance() , el cursor del edittext desaparecerá. No sé por qué

En primer lugar, haga clic en el área de las propiedades.
A continuación, agregue OnClickListner para el mismo.

Haga su acción personalizada onclick.

Es posible que desee comprobar utilizando ClickableSpan y adjuntar el TextView a un LinkMovementMethod y anular su onTouchEvent etc ….

Espero que ayude

siguiendo la respuesta del miaohua1982 , está claro que el cursor se está desactivando después de establecer el método setmovement a LinkMovementmethod. He enfrentado el problema similar en el textview donde el modo de la acción (que aparecerá en LongPress de textview) se cancela y no estoy consiguiendo ninguna acción items.I ha resuelto este problema extendiendo el LinkMovementMethod y sobrescribiendo un método como abajo. Espero que incluso en editext resuelva el problema.

 class MyMovementMethod extends LinkMovementMethod{ @Override public boolean canSelectArbitrarily() { return true; } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.