El problema es que si Enlace el texto vea la imagen subyacente ScrollView no escuche los gestos de barrido que he establecido. ¿Hay alguna forma de vincular sin interferir con los gestos de la vista subyacente? Intenté anular ontouchEvent y devolver falso a ACTION_MOVE pero el gesto scrollview necesita el evento ACTION_DOWN y ACTION_UP para funcionar. ¿Hay alguna manera de lograr eso?Android TextView Enlace las interceptaciones con gestos de vista padre
Respuesta
Linkify
se aplica a un movimientoMétodo del textoView LinkMovementMethod
. Ese método de movimiento pensó que implementa un método de desplazamiento vertical que anula cualquier otro método de desplazamiento que tenga el padre. Aunque touchEvent
se puede enviar a la matriz, el elemento primario específico ScrollView
necesitaba toda la secuencia ACTION_DOWN
, ACTION_MOVE
, ACTION_UP
para realizar (detección de barrido).
Así que la solución a mi problema es después de vincular para eliminar el método de desplazamiento de textView y manejar la acción de detección de enlace LinkMovementMethod
en onTouchEvent
de textView.
@override
public boolean onTouchEvent(MotionEvent event) {
TextView widget = (TextView) this;
Object text = widget.getText();
if (text instanceof Spanned) {
Spannable buffer = (Spannable) text;
int action = event.getAction();
if (action == MotionEvent.ACTION_UP
|| action == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
x -= widget.getTotalPaddingLeft();
y -= widget.getTotalPaddingTop();
x += widget.getScrollX();
y += widget.getScrollY();
Layout layout = widget.getLayout();
int line = layout.getLineForVertical(y);
int off = layout.getOffsetForHorizontal(line, x);
ClickableSpan[] link = buffer.getSpans(off, off,
ClickableSpan.class);
if (link.length != 0) {
if (action == MotionEvent.ACTION_UP) {
link[0].onClick(widget);
} else if (action == MotionEvent.ACTION_DOWN) {
Selection.setSelection(buffer,
buffer.getSpanStart(link[0]),
buffer.getSpanEnd(link[0]));
}
return true;
}
}
}
return false;
}
esta manera tengo la detección Link_Click (realizado sólo con el usuario toca el enlace y no toda la TextView) y no tener toda la LinkMovementMethod.
@weakwire y @Ridicully respuestas son correctas. Acabo de crear una pequeña idea que puedas volver a usar en tu proyecto.
Este es el enlace: https://gist.github.com/amilcar-andrade/e4b76840da1dc92febfc
hay una pequeña cosa mala que el método Vista de Texto :: setText (...) la utilización de la bandera autoLink,
if (mAutoLinkMask != 0) {
Spannable s2;
if (type == BufferType.EDITABLE || text instanceof Spannable) {
s2 = (Spannable) text;
} else {
s2 = mSpannableFactory.newSpannable(text);
}
if (Linkify.addLinks(s2, mAutoLinkMask)) {
text = s2;
type = (type == BufferType.EDITABLE) ? BufferType.EDITABLE : BufferType.SPANNABLE;
/*
* We must go ahead and set the text before changing the
* movement method, because setMovementMethod() may call
* setText() again to try to upgrade the buffer type.
*/
mText = text;
// Do not change the movement method for text that support text selection as it
// would prevent an arbitrary cursor displacement.
if (mLinksClickable && !textCanBeSelected()) {
setMovementMethod(LinkMovementMethod.getInstance());
}
}
}
así que pasé un tiempo para entender , por qué estoy deshabilitando enlaces en ListView artículo, pero a veces obtiene un enlace!
Tiene que establecer que la bandera en el valor necesario y luego llamar a un setText (...)
No está nada claro qué estás diciendo aquí. ¿Es esta una respuesta a la pregunta o estás tratando de hacer una nueva pregunta? – SuperBiasedMan
Es principalmente una nota, porque encontré este tema cuando busqué el problema "Vincular vista de texto en ListView" – Mike
- 1. Android TextView enlace sin subrayado?
- 2. Fragmento de Android onCreateView con gestos
- 3. Uso de una vista de superposición de gestos en Android
- 4. Android: cambie TextView textColor cuando se enfoca al padre
- 5. Android, gestos sobre widgets clicables
- 6. Linkify en android TextView
- 7. Android TextView
- 8. Android: detección de gestos arrojadizos
- 9. Enlace activo de Android de la URL en TextView
- 10. Android: Linkify TextView
- 11. Android: Iniciar actividad a través del enlace en TextView
- 12. Reconocimiento de gestos en Android
- 13. Android TextView habilita las etiquetas LinkiFy y Href
- 14. Android Copiar y pegar con TextView
- 15. Android ExpandableListView padre con botón
- 16. Formato TextView para que parezca un enlace
- 17. Android TextView Wrap
- 18. android: html en la vista de texto con el enlace que se puede hacer clic
- 19. android: LayoutParams for TextView hace desaparecer la vista, programáticamente
- 20. problema de gestos con la vista de mapa en la página viewpager
- 21. Problema de distribución con Android: rotó TextView
- 22. Android: Vista de Texto hipervínculo
- 23. Android TextView desplazado hacia abajo
- 24. TextView android: ellipsize = "end" issue
- 25. Clickable TextView en Android
- 26. Gestos verticales y horizontales en Android
- 27. Android TextView Timer
- 28. Android Simple TextView Animation
- 29. Android Autocompletar TextView ancho desplegable
- 30. multicolor Android en una TextView
Un millón de agradecimientos para esta respuesta. –
me alegro de que finalmente ayudó a alguien: D – weakwire
gran respuesta compañero! – Maurycy