¡Luché con esto durante más de una semana y finalmente descubrí cómo hacer que esto funcione!
Mi problema era que todo se desplazaría como un "bloque". El texto en sí se desplazaba, pero como un fragmento en lugar de línea por línea. Obviamente, esto no funcionó para mí, porque cortaría las líneas en la parte inferior. Todas las soluciones anteriores no me funcionaron, así que diseñé la mía.
Aquí está la solución más fácil con diferencia:
Cree un archivo de clase llamado: 'PerfectScrollableTextView' dentro de un paquete, luego copie y pegue este código en:
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;
public class PerfectScrollableTextView extends TextView {
public PerfectScrollableTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setVerticalScrollBarEnabled(true);
setHorizontallyScrolling(false);
}
public PerfectScrollableTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setVerticalScrollBarEnabled(true);
setHorizontallyScrolling(false);
}
public PerfectScrollableTextView(Context context) {
super(context);
setVerticalScrollBarEnabled(true);
setHorizontallyScrolling(false);
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
if(focused)
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean focused) {
if(focused)
super.onWindowFocusChanged(focused);
}
@Override
public boolean isFocused() {
return true;
}
}
Finalmente cambie su 'TextView' en XML:
Desde: <TextView
A: <com.your_app_goes_here.PerfectScrollableTextView
maxLines
requiere que ingrese un número arbitrario; ¿Esto no es algo que funcione para cada tamaño de pantalla y tamaño de fuente? Me parece más simple simplemente envolverlo con unScrollView
, lo que significa que no tengo que agregar ningún atributo o código XML adicional (como configurar el método de movimiento).