Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: usando LinkMovementMethod para editar texto

Básicamente quiero entender acerca de la clase LinkMovementMethod . Tengo una imagen dentro del texto de edición que necesita ser clicable. Así que utilicé LinkMovementMethod.getInstance para editar el texto. Pero debido a este objeto LinkMovementMethod el menú contextual (presionar) las opciones para editar texto como copiar, cortar, pegar no son visibles. También no puedo colocar el cursor en el texto de la edición. De alguna manera el cursor se esconde.

¿Es el método correcto para usar LinkMovementMethod en el texto de edición o es necesario escribir una clase personalizada de LinkMovementMethod para el cursor y el menú contextual problema.

EditText editText = (EditText)findViewById(R.id.text); editText.setMovementMethod(LinkMovementMethod.getInstance()); 

-Acerca de Ron.

  • No hay manera de setProgressDrawable en RemoteViews
  • AppWidgetHost no actualiza widgets
  • Restablecimiento del valor del widget de búsqueda (SearchView)
  • Android EditText ("Textbox"): Auto capitalización de la primera letra de cada palabra mientras el usuario escribe
  • ImeOptions "actionNext" por programa - cómo saltar al siguiente campo?
  • Widget de la pantalla de inicio de Android: RemoteViews setRemoteAdapter (...) método no funciona en API 11+
  • Android: ¿una galería vertical?
  • Android - Tabs, MapView, actividades dentro de las pestañas
  • 2 Solutions collect form web for “Android: usando LinkMovementMethod para editar texto”

    No debe utilizar LinkMovementMethod con texto editable. LinkMovementMethod es un método de movimiento que te permite moverte entre enlaces … lo cual no es lo que quieres para un editor de texto, ya que deberías usar el método de movimiento que mueve el cursor para editarlo.

    ¿Qué espera hacer con los enlaces en el texto editable? Cuando tenga texto editable, tocando en el texto, el cursor se situará en ese punto para editarlo. No abre el enlace. Estas son dos cosas en conflicto. Si desea tener algún otro comportamiento, tendrá que personalizar la vista de texto para hacer algo especial y averiguar cómo va a desambiguar entre editar el texto del enlace y abrirlo (por ejemplo, Google Docs le muestra un pop-up a Seleccione para abrirla si no desea editarla). Pero necesitará codificar esto usted mismo, no hay cosa mágica incorporada que implemente esto en el marco actual.

    Una de las maneras es extends EditText

     import android.content.Context; import android.text.Layout; import android.text.style.ImageSpan; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.EditText; public class Edit extends EditText { public Edit(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public Edit(Context context, AttributeSet attrs) { super(context, attrs); } public Edit(Context context) { super(context); } @Override public boolean onTouchEvent(MotionEvent event) { boolean b = super.onTouchEvent(event); int x = (int) event.getX(); int y = (int) event.getY(); x -= getTotalPaddingLeft(); y -= getTotalPaddingTop(); x += getScrollX(); y += getScrollY(); Layout layout = getLayout(); int line = layout.getLineForVertical(y); int off = layout.getOffsetForHorizontal(line, x); setSelection(off); /** * get you interest span */ ImageSpan[] link = getText().getSpans(off, off, ImageSpan.class); System.out.println("---link---" + link.length); if (link.length != 0) { String src = link[0].getSource(); System.out.println("---src---" + src); return true; } return b; } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.