2012-09-27 18 views
13

Estoy usando una pestaña galaxia 1, 7 pulgadas HDP y una pestaña galaxy plus, HDP de 7 pulgadas pero más resolución, y en mi aplicación, el texto puede leerse bien en la pestaña galaxy, pero en la pestaña galaxy plus hay demasiado pequeño Im utilizando sp en tamaño de fuente y diseño de gran tamaño. ¿Alguna idea? GraciasTamaño del texto con diferente resolución

+0

puede ser que usted puede encontrar la respuesta desde aquí también http://stackoverflow.com/questions/16706076/font-size-and-images-for-different-devices –

Respuesta

2

Puede usar cualquiera de las dimensiones this, que se comercializan como según el tamaño físico de la pantalla. Que los textos en todos los dispositivos tendrán el mismo tamaño físico.

2
+0

puede utilizar la inmersión para el texto también pero la unidad recomendada es sp . Cambiar de sp a dip solo empeorará la situación ... – karn

+0

textSize siempre es SP, no DP. Google lo dejó en claro. – Sotti

15

sólo tiene que crear diferentes carpetas relacionados con la densidad o el tamaño pantalla como

Opción 1.

values-large 
values-small 
values-normal 

Para más explicación cheque este enlace ...

Multiple Screen Support

Opción 2.

mTextView.setTextSize(16 * getResources().getDisplayMetrics().density); 

esto dará TextSize dependiendo de la densidad ..

+0

Sí, pero las 2 tabletas usan diseños grandes pero con diferente resolución, entonces tendré el mismo problema. – colymore

4

intente esto:

como esto

android:textSize= "10sp" 

sp

Píxeles independientes de la báscula: esta es como la unidad dp, pero también es escalada según la preferencia de tamaño de fuente del usuario. Se recomienda utilizar esta unidad cuando se especifiquen los tamaños de fuente, por lo que se ajustarán para tanto la densidad de la pantalla como las preferencias del usuario.

+5

textSize, not textsize –

18

Por especificaciones de hardware Galaxy Tab 1 es un dispositivo MDPI, pero debido a que usa Android 2.x Samsung lo establece programáticamente para usar recursos HDPI. Así que puedo aconsejar que hacer lo siguiente:

  1. crear el archivo en dimens.xmlvalues directorio.
  2. Poner allí <dimen name="font_size">30sp</dimen>.Este es el tamaño de fuente predeterminado.
  3. Crear archivo dimens.xml en el directorio values-large.
  4. Poner allí <dimen name="font_size">20sp</dimen>. Este es el tamaño de fuente de la pestaña galaxy 1.
  5. Crea el archivo dimens.xml en el directorio values-sw600dp.
  6. Poner allí <dimen name="font_size">30sp</dimen>. Este es el tamaño de fuente para otras tabletas con Android 3.xy versiones posteriores.
  7. En la disposición especifica android:textSize="@dimens/font_size"
+0

¿por qué necesita poner la dimensión de texto en una carpeta de valores diferente? Android trata la carpeta de valores predeterminados como uno para el dispositivo mdpi y lo escala según la configuración actual del dispositivo. Si el dispositivo está en una categoría grande, entonces lo escalará. Corrígeme si estoy equivocado. – karn

+0

Debido a que Galaxy Tab 1 es MDPI, pero las escalas de texto a HDPI tamaño – vasart

+1

, el tamaño y la resolución son dos cosas diferentes. Un dispositivo de tamaño pequeño puede estar en la categoría hdpi y un dispositivo grande en la categoría ldpi. Entonces, ¿cómo va a ser útil usar valores-grandes y valores-pequeños aquí? – karn

32

Esto debe ser algo de ayuda para usted si desea configurar el tamaño mediante programación. El texto se mostrará en el mismo tamaño en cada dispositivo

TextView text = new TextView(this); 
text.setText("text"); 
text.setTextSize(16 * getResources().getDisplayMetrics().density); 
+2

Intenté esto para 'Canvas.setTextSize()'. Sí ayuda, aunque el texto no es del mismo tamaño en los 2 dispositivos en los que probé. – hBrent

+0

No funciona si el tamaño de la pantalla es grande pero la densidad es baja. – usman

+0

pero no es la densidad en dp? le gusta configurar el tamaño del texto en xml a 16dp, lo que no está bien, creo que – has19

4

(1) Creo que el uso de "DP" o "dip" para el texto es mejor que el uso de "SP" porque dp (densidad de píxeles) ajusta de acuerdo a la densidad de la pantalla . Por lo tanto, el texto se verá más grande en los dispositivos de alta densidad y más pequeño en los dispositivos de baja densidad.

(2) o si desea utilizar específicamente "SP" para el tamaño del texto, a continuación, se puede detectar la densidad de dispositivos y luego ajustar el tamaño del texto en consecuencia:

DisplayMetrics displayMetrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
    switch(displayMetrics.densityDpi){ 
     case DisplayMetrics.DENSITY_LOW: 
      //set text-size for low-density devices. 
      break; 
     case DisplayMetrics.DENSITY_MEDIUM: 
      //set text-size for medium-density devices. 
      break; 
     case DisplayMetrics.DENSITY_HIGH: 
      //set text-size for high-density devices. 
      break; 
    } 
1

TextView headerTextView (etiqueta String) {

TextView headerTextView = new TextView(this.context); 
    float scale = context.getResources().getDisplayMetrics().density; 
    if(scale > 2.0) { 
    headerTextView.setWidth(210); 
    headerTextView.setHeight(120); 
    headerTextView.setTextSize(17); 
    } 
    else { 
     headerTextView.setWidth(125); 
     headerTextView.setHeight(60); 
     headerTextView.setTextSize(21); 
    } 
2

El código siguiente ajusta fuente escala de tamaño en una TextView, usando ajuste de tamaño de fuente del sistema del usuario.

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getRealSize(size); 
int screenWidth = size.x; 
float fontscale = getResources().getConfiguration().fontScale; 
float textSize = (screenWidth/ fontscale)/10; 
Log.e(TAG, "textSize is: " + textSize); 
yourTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize); 
+1

La llamada requiere nivel de API 17 para 'display.getRealSize (size);' –

0

En resumen, se puede hacer uso de scalable DP y scalable Font enfoque.

La estructura de proyecto de Android permite intrínsecamente diferentes tamaños de fuente (SP) y valores de margen (DP) definiéndolos en archivos dimens.xml para tamaños de pantalla admitidos. Pero el problema que aún persiste es: ¿qué valores usar? Los diseñadores de UX normalmente proporcionan guías de estilo para un solo conjunto (por ejemplo, el tamaño de pantalla de 360x640 DP) y no incluyen todos los demás tamaños de pantalla admitidos. Por lo tanto, el problema de usar las etiquetas correctas para otros tamaños de pantalla admitidos sigue sin respuesta.

Una buena solución (según tengo entendido) es usar el diccionario escalable de archivos dimens.xml, algo similar al diccionario de archivos proporcionado por la biblioteca this. Después de agregar estos archivos xml al proyecto, solo necesita usar las teclas en sus diseños, luego, Android automáticamente utiliza el valor de fuente/margen del directorio respectivo. Consulte here para obtener una diferencia visual, con y sin este enfoque.

Cuestiones relacionadas