¿Cómo evito completamente que TextView se desplace?
Tengo un TextView con mucho texto. Este TextView tiene maxLines
establecido, por lo que sólo muestra las primeras 8 o más líneas. También tengo un botón "Read More" (Leer más), así que me encargo de ampliar el TextView por mi cuenta.
Mi problema es que a veces el TextView se desplaza un poco (sólo la mitad de una línea a la vez), aunque nunca especificó ninguna barra de desplazamiento. Este problema se agrava porque el TextView está dentro de un ListView, por lo que cuando el usuario desplaza el ListView principal, el TextView a veces se desplaza un poco, como esto:
- ¿Es posible agregar un TextView desplazable a un ListView?
- ¿Hay una manera de centrar perfectamente el texto?
- Extensión de Spanned, SpannedString, Spannable, SpannableString y CharSequence de Android
- Barra de herramientas de selección de texto no visible en las versiones de pre-malvavisco sin ActionBar
- RelativeLayout y TextView con gravedad no funcional
¿Cómo evito que TextView se desplace?
- ¿Cómo puedo poner un borde alrededor de una vista de texto de Android?
- Cómo cambiar el texto de TextView en el cambio de texto de EditText?
- Hacer texto flotante-derecha en Android
- Texto intermitente en la vista android
- Configuración de textview en la parte inferior de android
- TextView funciona mal con breakStrategy = "equilibrado" y layout_width = "wrap_content"
- Romper el texto grande en las páginas en el selector de texto androide o ver flipper
- Altura de línea de Android Spannable
Tengo el mismo problema, Mi solución es crear un NoScrollTextView extiende TextView como este
public class NoScrollTextView extends TextView { public NoScrollTextView(Context context) { super(context); } public NoScrollTextView(Context context, AttributeSet attrs) { super(context, attrs); } public NoScrollTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public NoScrollTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override public void scrollTo(int x, int y) { //do nothing } }
Configurar scrollTo no hacer nada
Así que hice un poco de investigación y no creo que sea tan simple como desactivar el desplazamiento, pero hay algunas cosas que puede hacer / intentar.
El primero es setEnabled (false), pero esto desactivará los vínculos y alterará el color del texto.
La segunda, que sugiero intentar, está utilizando el método scrollTo (int x, int y). Sólo scrollTo (0,0) después de configurar el texto de la TextView, mi conjetura es el texto grande es la única cosa que causa el desplazamiento por lo que debería ser capaz de cuidar de ella.
La tercera respuesta que encontré que se puede probar es un poco más complicado y no exactamente su pregunta, pero puede funcionar para usted se puede encontrar aquí .
public class LinkMovementMethodOverride implements View.OnTouchListener{ @Override public boolean onTouch(View v, MotionEvent event) { TextView widget = (TextView) v; Object text = widget.getText(); if (text instanceof Spanned) { Spanned buffer = (Spanned) 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 only works on Spannable text. In our case setSelection doesn't work on spanned text //Selection.setSelection(buffer, buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0])); } return true; } } } return false; } }
"Después de que se aplican a la vista de texto de destino como oyente de contacto: –
Textview.setOnTouchListener (nuevo LinkMovementMethodOverride ()); "
Pruebe estas líneas de código en xml
android:isScrollContainer="false" android:ellipsize="end"
Necesitaba función como ver más en mi proyecto y he utilizado ellipsizing textview desde este post SO. Funciona como un encanto y también proporciona una interfaz para comprobar si el texto fue ellipsized. Esto debería funcionar.
Sólo use setMinLines () para mostrar siempre todo el texto
- Aplicar estilo de Android a TextView personalizado
- Mejor Dagger dependencia inyección basada en tipo de construcción y sabor?