PDA

Ver la Versión Completa : Autojuste de texto dentro de un TextView o Button


manolazo
06/02/14, 19:39:00
Buenas.

Me gustaría saber si es posible que se ajuste un texto automáticamente dentro de un TextView (o dentro de un Button) a las dimensiones que de dicha view y no al reves.

Es decir que si la view tiene
android:layout_width="50dp" android:layout_height="50dp" que sea el texto que se ajuste en una linea o en dos en TODO LO ANCHO de la view cambiendo su tamaño automaticamente.

Un saludo

jtsamper
06/02/14, 20:24:19
Normalmente para centrar texto se usa android:textAlignment="center" y te lo centra y si no prueba con android:gravity="center"

kriogeN
06/02/14, 20:31:32
Directamente no, pero yo uso una clase que hereda de TextView que hace eso.

No me acuerdo donde la encontré y además la he modificado bastante desde entonces para que se ajuste a mis necesidades, pero aquí tienes una que hace lo mismo:

http://stackoverflow.com/questions/5033012/auto-scale-textview-text-to-fit-within-bounds/5535672#5535672

jtsamper
06/02/14, 20:35:43
Aaa xD, me parecio leer el centrar xD la prisa no son buena xD

Como bien dice KriogeN esa clase funciona muy bien, yo tambien la he usado, pero no me gusto, porque a veces te oculta el texto bajo otro view, sobre todo en versiones antiguas me ha pasado.

kriogeN
06/02/14, 20:39:44
Pues a mi no me ha ocurrido nunca, la uso como base en una aplicación donde todos los TextView son de ese tipo y no tengo problemas, ni siquiera con Android 2.2 (versión mínima).

Aunque como ya he dicho, la tengo bastante modificada para que no me haga cosas raras, aunque repito que yo no uso esa, uso una parecida.

jtsamper
06/02/14, 20:43:47
Esa "version" no tiene nada que ver a la que yo encontre, sera por eso.

Gracias KriogeN me la apunto.

manolazo
06/02/14, 23:32:08
Buenas.

Ya vi la clase que pones pero no se si es que la uso mal o no se ajusta como debiera.

Supongo que uso un TextView de 300x300:


RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(300,300);
params.addRule(RelativeLayout.BELOW, linear.getId());
AutoResizeTextView text = new AutoResizeTextView(this);
text.setLayoutParams(params);


Si quiero que el texto me quede centradito en el TextView :


text.setLayoutParams(params);
text.setText("hola que tal estas");
text.resizeText();
text.setBackgroundResource(R.drawable.agris);
text.setGravity(Gravity.CENTER);


Deberia de ser suficiente con poner text.resizeText() ??
No veo que haga un aumento o disminucion de tamaño del texto automaticamente cuando cambio las dimensiones del TextView. Si cambia es ligeramente pero no mucho.
SI pongo la setTextSize() tampoco me varia mucho.

Alguna idea?