Estoy mostrando texto en una vista de texto que parece ser demasiado larga para caber en una pantalla. Necesito hacer mi TextView desplazable. ¿Cómo puedo hacer eso?
Aquí está el código:
final TextView tv = new TextView(this);
tv.setBackgroundResource(R.drawable.splash);
tv.setTypeface(face);
tv.setTextSize(18);
tv.setTextColor(R.color.BROWN);
tv.setGravity(Gravity.CENTER_VERTICAL| Gravity.CENTER_HORIZONTAL);
tv.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent e) {
Random r = new Random();
int i = r.nextInt(101);
if (e.getAction() == e.ACTION_DOWN) {
tv.setText(tips[i]);
tv.setBackgroundResource(R.drawable.inner);
}
return true;
}
});
setContentView(tv);
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).ScrollView
ocupe todo el espacio que necesita (por ejemplo, a través delandroid:fillViewport
atributo), o establece el tamaño específico que desea. El usomaxLines
no debe usarse para establecer tamaños de elementos de la interfaz de usuario, por lo que no es una solución.Así es como lo hice puramente en XML:
NOTAS
android:fillViewport="true"
combinado conandroid:layout_weight="1.0"
hará que la vista de texto ocupe todo el espacio disponible.Al definir la vista de desplazamiento, ¡NO especifique lo
android:layout_height="fill_parent"
contrario, la vista de desplazamiento no funciona! (¡Esto me ha hecho perder una hora ahora mismo! FFS).CONSEJO PRO:
Para desplazarse programáticamente a la parte inferior después de agregar texto, use esto:
fuente
mTextView.getBottom()
, solo use el métodomScrollView.fullScroll(View.FOCUS_DOWN)
ya que es parte de la API ScrollView. Vea aquí y aquí para más información.LinearLayout
o elScrollView
pueden ser inútiles en este ejemplo (eliminé elLinearLayout
completamente). También advierte que para elTextView
, debe serandroid:layout_height="wrap_content"
coincidir con elScrollView
. Estas advertencias pueden deberse a los 3 años que han pasado desde que se publicó esta respuesta. En cualquier caso, esta respuesta admite un desplazamiento y un desplazamiento suaves ... + 1<!--suppress AndroidLintUselessParent -->
encima delScrollView
archivo xml se encargará de esas advertencias.Todo lo que es realmente necesario es setMovementMethod (). Aquí hay un ejemplo usando un LinearLayout.
Archivo main.xml
Archivo WordExtractTest.java
fuente
ScrollView
método.StringBuilder
lugar de unString
... lo que tiene es un poco derrochador.Haga su vista de texto simplemente agregando esto
fuente
No es necesario poner
Puedes hacer tu trabajo simplemente agregando:
Y, ponga este código en su clase Java:
fuente
Tu también puedes
TextView
por aScrollView
; oScrollingMovementMethod.getInstance();
.fuente
La mejor manera que encontré:
Reemplace TextView con un EditText con estos atributos adicionales:
No hay necesidad de envolver en un ScrollView.
fuente
ScrollView
Es el camino correcto a seguir.Simple. Así es como lo hice:
Lado XML:
Lado de Java:
Prima:
Para permitir que la vista de texto se desplace hacia abajo a medida que el texto lo llena, debe agregar:
al archivo XML TextView. Se desplazará hacia abajo automáticamente a medida que ingrese más texto.
Por supuesto, debe agregar el texto utilizando la función de agregar en lugar de establecer el texto:
Lo usé para fines de registro.
Espero que esto ayude ;)
fuente
Esto es "Cómo aplicar ScrollBar a su TextView", utilizando solo XML.
Primero, debe tomar un control Textview en el archivo main.xml y escribir algo de texto en él ... de esta manera:
Luego, coloque el control de vista de texto entre la vista de desplazamiento para mostrar la barra de desplazamiento para este texto:
Eso es...
fuente
Esto proporcionará un texto de desplazamiento suave con una barra de desplazamiento.
fuente
Sin embargo, el "consejo profesional" anterior de Someone Somewhere ( Hacer que TextView se pueda desplazar en Android ) funciona de maravilla, ¿qué sucede si agrega texto dinámicamente a ScrollView y desea desplazarse automáticamente hacia la parte inferior después de un agregado solo cuando el usuario está en la parte inferior de ScrollView? (Quizás porque si el usuario se ha desplazado hacia arriba para leer algo que no desea restablecer automáticamente en la parte inferior durante un apéndice, lo que sería molesto).
De todos modos, aquí está:
El mTextStatus.getLineHeight () lo hará para que no se desplace a ToBottom () si el usuario está dentro de una línea desde el final de ScrollView.
fuente
Si desea que el texto se desplace dentro de la vista de texto, puede seguir lo siguiente:
Primero deberías subclasificar textview.
Y luego usa eso.
El siguiente es un ejemplo de una vista de texto subclasificada.
Ahora, tienes que usar eso en el XML de esta manera:
Eso es.
fuente
Agregue lo siguiente en la vista de texto en XML.
Y finalmente, agregue
en el archivo Java
fuente
No encontré el desplazamiento de TextView para admitir el gesto de 'lanzamiento', donde continúa desplazándose después de un movimiento hacia arriba o hacia abajo. Terminé implementando eso yo mismo porque no quería usar un ScrollView por varias razones, y no parecía haber un MoveMethod que me permitiera seleccionar texto y hacer clic en los enlaces.
fuente
En kotlin por hacer que la vista de texto se pueda desplazar
y también agregue en xml esta propiedad
fuente
Cuando haya terminado con el desplazamiento, agregue esta línea a la última línea de la vista cuando ingrese algo en la vista:
fuente
Si no desea utilizar la solución EditText, entonces podría tener mejor suerte con:
fuente
Agregue esto a su diseño XML:
Y en el código tienes que escribir las siguientes líneas:
fuente
El siguiente código crea una vista de texto de desplazamiento horizontal automático:
Al agregar TextView al uso xml
Establezca las siguientes propiedades de TextView en onCreate ()
fuente
Puedes desplazarte ahora.
fuente
Úselo así
fuente
En mi caso, diseño de restricción AS 2.3.
Implementación de código:
XML:
fuente
¡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:
Finalmente cambie su 'TextView' en XML:
Desde:
<TextView
A:
<com.your_app_goes_here.PerfectScrollableTextView
fuente
Poner
maxLines
yscrollbars
dentro de TextView en xml.Luego en código java.
textView.setMovementMethod(new ScrollingMovementMethod());
fuente
Tuve este problema cuando estaba usando
TextView
dentro deScrollView
. Esta solución me ha funcionado.fuente
siempre que necesite usar ScrollView como padre , y también use el método de movimiento de desplazamiento con TextView.
Y cuando haces retratos para apaisar tu dispositivo, ese momento ocurre algún problema . (como) toda la página es desplazable pero el método de movimiento de desplazamiento no puede funcionar.
si todavía necesita usar ScrollView como método principal o de movimiento de desplazamiento, entonces también use la siguiente descripción.
Si no tiene ningún problema, use EditText en lugar de TextView
vea abajo :
Aquí, EditText se comporta como TextView
Y tu problema será resuelto
fuente
XML: puede usar
android:scrollHorizontally
AttributeSi se permite que el texto sea más ancho que la vista (y, por lo tanto, se puede desplazar horizontalmente).
Puede ser un valor booleano, como "verdadero" o "falso".
Prigramacaly -
setHorizontallyScrolling(boolean)
fuente
Prueba esto:
fuente