Android y justificar texto

Hola buenas!

Me he encontrado un problema el cual no consigo solucionar. Estoy intentanto justificar un texto (de un textView) pero no se exactamente como hacerlo, he estado mirando los libros que tengo y no he encontrado en ninguno nada por el estilo. Espero que pueda hacerse ya sea con etiquetas de XML (lo cual me resultaria mas sencillo) o por codigo de java.

Un saludo y gracias.
Buenas!

Estás igual que yo hace unas semanas, justo antes de publicar mi aplicación me dispuse a hacer el "disclaimer" y me encontré con que no había manera de justificar el texto de un TextView!! cawento
Después de mucho investigar, al parecer, la única manera posible de justificar un texto es usar un WebView y cargarle código HTML. Me explico mejor:

Donde tengas tu TextView en el xml pon algo tal que así (cambiando los valores de los márgenes y alineamientos):
<RelativeLayout android:id="@+id/relativeLayout2" android:layout_below="@+id/relativeLayout1" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_marginTop="10dip" android:layout_marginLeft="15dip" android:layout_marginRight="15dip" android:layout_marginBottom="60dip">
      <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" />
</RelativeLayout>


Eso contando que te mueves con RelativeLayouts, que desde mi punto de vista, son los mejores que hay jejeje [sonrisa]

Luego en el código solo hace falta cargar la WebView y "enchufarle" el html a saco:
webView  = (WebView) findViewById(R.id.webview);
webView.setBackgroundColor(Color.BLACK);
webView.setVerticalScrollBarEnabled(true);
webView.setVerticalFadingEdgeEnabled(true);
webView.setVerticalScrollbarOverlay(true);
webView.loadData(webPage_es, "text/html", "UTF-8");
La variable "webPage_es" es un string con todo el código html, también puedes meter el html como asset o fichero raw y cargarlo.

De esta manera se puede justificar el texto e incluso ponerle cualquier estilo con css. [risita]

El resultado final es bastante bueno:
Imagen
Además si te fijas, al ser un WebView, el solito te hace scroll si es necesario y puedes activar el "fade" de la parte superior e inferior que aún queda mas resultón :).

PD: No te fijes en mi capacidad de redacción en ingles, que ya se que es malísima! [+risas]

Un Saludo ;)
Wow, es perfecto, justo como quiero. Cuando tenga mas tiempo me lo mirare bien y con calma me pondre a ello, muchisimas gracias
Denbrough escribió:Wow, es perfecto, justo como quiero. Cuando tenga mas tiempo me lo mirare bien y con calma me pondre a ello, muchisimas gracias


De nada hombre, cualquier otra cosa no dudes en preguntarlo. [Ooooo]
Buenos días, abro de nuevo el hilo.
Antetodo muchísimas gracias por responder, lo he probado y va perfectamente. Mi duda viene en que tengo acentos y "ñ" en mi webView y no me reconoce estos carácteres, ¿me podrías orientar de como lo has solucionado?
Yo he creado un string del tipo:
        String webPage_es = "<html><body><div style=text-align:justify>Estoy probando el texto justificado, lo primero que pruebo son acentos y ñ, pá pé pí pó pú y las ññññññ </div></body></html>";

Saludos y de nuevo mil gracias!!
patrulleroo escribió:Buenos días, abro de nuevo el hilo.
Antetodo muchísimas gracias por responder, lo he probado y va perfectamente. Mi duda viene en que tengo acentos y "ñ" en mi webView y no me reconoce estos carácteres, ¿me podrías orientar de como lo has solucionado?
Yo he creado un string del tipo:

String webPage_es = "<html><body><div style=text-align:justify>Estoy probando el texto justificado, lo primero que pruebo son acentos y ñ, pá pé pí pó pú y las ññññññ </div></body></html>";

Saludos y de nuevo mil gracias!!


En el HTML te falta la etiqueta meta para definir el charset. Prueba con ella:

<html>
    <head>
        <meta charset=utf-8>
    </head>
    <body>...</body>
</html>";


Un saludo [bye] [bye]
5 respuestas