Pregunta

Yo no diría que mi aplicación es mucho texto ... pero muestra cadenas aleatorias que son a veces más tiempo que otros. Se adaptan muy bien en mi Droid 2, pero saben que no van a mostrar la misma en androides más pequeños. ¿Alguien sabe la forma correcta de dar formato a un texto diferente tamaño para garantizar que funciona en todos los androides?

¿Fue útil?

Solución

Si lo que desea es hacer un poco de texto más grande o más pequeño se debe preferir el uso de estilos por defecto proporcionados por Android:

<TextView ... android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView ... android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView ... android:textAppearance="?android:attr/textAppearanceSmall" />

Ninguno de los dos es por defecto, por defecto es:

<TextView ... android:textAppearance="?android:attr/textAppearance" />

Se puede sin duda aplicarse no sólo a TextView, sino a otros puntos de vista también.

Otros consejos

Google recomienda el uso de SP para las dimensiones de tamaño de texto. Los diseños que uso tendrá que trabajar por lo que cuando las escalas de diseño que trabaja en todos los tamaños para el mejor grado posible (diseños que pueda necesitar para diferentes tamaños de pantalla). Si el texto no se ajuste, se envuelve o se ellipsize

no parecen

SP y DP a trabajar de la manera que cabría esperar. DP se supone que es "independiente de la exhibición", y SP se describe como el mismo; pero se puede escalar (presumiblemente por orden de "zoom"). Sin embargo, no lo hacen el trabajo como era de esperar.

Por ejemplo, tengo dos dispositivos, un teléfono 320x480, y un nexo; el cual es 800x1280 pero que se describe como SW600 (no tengo ni idea de por qué). Para ver lo que estaba pasando, he añadido un TextView a mi modo de ver, que consta de 60 caracteres 'X' (elegidos porque tienen el mismo aspecto como kerned monoespaciado).

El Textview TEXTSIZE se fijó a 10DP, y 60 de estos llenar completamente la pantalla Nexus. Sin embargo, aparecen exactamente del mismo tamaño en el teléfono, y la forma casi dos líneas.

Por lo tanto, parece que la DP no es independiente de la exhibición; sino simplemente describe el número (aproximado) de píxeles cada carácter se le dará al máximo. La definición de la dimensión en el SP no hace ninguna diferencia.

Esto no es muy útil -. Yo estaba esperando que alguna forma de escalamiento se aplicaría, por lo que podría seleccionar un tamaño adecuado en mi teléfono, y sería a escala para el Nexus

Por ejemplo, si mi línea de texto fue de aproximadamente treinta caracteres de longitud, y yo lo quería para llenar toda una línea a través de la pantalla, yo lo definiría como 10DP; y cada dp sería un pixel (más o menos). Entonces, cuando se dibuja en el Nexus, cada AD sería de dos píxeles, y al parecer el doble de grande.

Esto no es cómo funciona, por lo que yo puedo decir; lo que lo hace bastante inútil.

Mi única solución , y no es un elegante, es únicas dimensiones uso de un archivo dimens.xml, y tener seis de ellos, uno para cada uno de los anchos comunes (240,320,480,600,720,800 - nada más alto puede ponerse en orden), luego diseñar mi código para que quepa en el Nexus, y el uso de una hoja de cálculo que he escrito para escalar cualquier valor en dimens.xml para los anchos comunes. Es un dolor; pero funciona.

A menos que lo estoy usando mal, el sistema Android se acaba de romper.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top