Cómo establecer la unidad para Paint.setTextSize ()
¿Es posible cambiar la unidad para Paint.setTextSize()
? Por lo que sé, es pixel, pero me gusta establecer el tamaño del texto en DIP para el apoyo de múltiples pantallas.
- ¿Cómo dejas de que ADT Logcat View aparezca automáticamente en Eclipse?
- ¿Qué el mensaje de logcat: "E / MoreInfoHPW_ViewGroup (2905): Vista de padre no es un TextView" significa?
- ¿En qué momento del ciclo de vida de la aplicación puede / debe utilizar mediciones de diseño?
- Ver redibujado en la posición equivocada después de cerrar el teclado - Cordova / PhoneGap - Android
- Custom View onDraw se llama constantemente
- Detectar si las vistas se superponen
- Android: ¿conseguir niños dentro de una vista?
- Android: cómo deshabilitar todos los clics en una vista
- ¿Por qué ver el ancho y la altura 0 en post () ejecutables?
- Androide. Buscar vista por etiqueta
- Android - Descripción de View.getLocalVisibleRect (Rect)
- Cómo crear una vista parcialmente invisible
- Cómo agregar una vista a la parte superior de un diseño lineal en el código?
Convertir de esta manera
// The gesture threshold expressed in dip private static final float GESTURE_THRESHOLD_DIP = 16.0f; // Convert the dips to pixels final float scale = getContext().getResources().getDisplayMetrics().density; mGestureThreshold = (int) (GESTURE_THRESHOLD_DIP * scale + 0.5f); // Use mGestureThreshold as a distance in pixels
Desde aquí http://developer.android.com/guide/practices/screens_support.html#dips-pels
Sé que este tema es antiguo y ya respondido, pero me gustaría sugerir también este pedazo de código:
int MY_DIP_VALUE = 5; //5dp int pixel= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, MY_DIP_VALUE, getResources().getDisplayMetrics());
La respuesta aceptada es para los gestos, no para ajustar el tamaño del texto. La respuesta más votada (al momento de escribir esto) está cerca pero la documentación recomienda usar sp
vez de dp
porque además de ser escalado para densidades de pantalla (como valores de dp
), sp
también se escala de acuerdo a los tamaños de fuente preferidos por el usuario. La respuesta de @ pelotasplus sólo funciona si obtiene el valor de los recursos.
De un int
en el código
int spSize = 17; float scaledSizeInPixels = spSize * getResources().getDisplayMetrics().scaledDensity; mTextPaint.setTextSize(scaledSizeInPixels);
O alternativamente
int spSize = 17; float scaledSizeInPixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spSize, getResources().getDisplayMetrics()); mTextPaint.setTextSize(scaledSizeInPixels);
De los recursos
O si tiene el valor sp
o dp
en los recursos:
<resources> <dimen name="fontSize">17sp</dimen> </resources>
con
float scaledSizeInPixels = getResources().getDimensionPixelSize(R.dimen.fontSize); mTextPaint.setTextSize(scaledSizeInPixels);
Otros enlaces
- ¿Cómo convertir DP, PX, SP entre sí, especialmente DP y SP?
- Android: Tamaño de texto de Canvas.drawText () en diferentes resoluciones de pantalla
-
Paint.setTextSize
-
getDimensionPixelSize
Y aquí es aún más corto método para convertir dp-s a px-els teniendo en cuenta métricas de pantalla en cuenta
Si su objeto Paint está siendo utilizado para dibujar texto en una lona, puede dejar que el Canvas maneje la escala para usted.
Al llamar a Canvas.drawText()
el tamaño del texto se determina primero por el paso en el objeto Paint
, que se puede establecer a través de Paint.setTextSize()
. El tamaño del texto se escala automáticamente mediante Canvas.getDensity()
en función de la densidad de lienzo, que se puede encontrar utilizando Canvas.getDensity()
.
Al establecer el tamaño del texto en un objeto de pintura que se dibujará en lienzo, trabaje con un valor unitario de dp
o sp
y deje que Canvas maneje la escala para usted.
- El elemento debe ser declarado error para la forma de etiqueta
- Poner una barra de progreso en ActionBar