Cómo obtener la altura y el ancho de un texto con Canvas
Estoy desarrollando una aplicación Android 2.2.
Estoy utilizando este método para dibujar un texto en una vista:
- Reducir el relleno de texto dentro de un botón
- Metaio sdk (openGL) frena la representación de fuente y de imagen
- Brillante texto en el botón con fondo transparente en la disposición con otro fondo
- Android: mover el texto del botón a la parte inferior
- Cambiar el texto de un botón dentro de un ListView en Android
public void draw(Canvas c) { p.setColor(Color.WHITE); if(name != null) c.drawText(name, getLeft(), getTop(), p); }
¿Cómo puedo obtener la altura y el ancho del texto del nombre?
Si hago esto (p es un objeto Paint):
p.getTextBounds(name, 0, name.length(), bounds);
Tengo Con name = 'Loading', bounds = Rect(1, -10 - 42, 3);
.
No sé por qué consigo este extraño rectángulo.
¿Cualquier pista?
Esta es mi solución posible:
public class MyView extends ARSphericalView { public String name; public MyView(Context ctx) { super(ctx); inclination = 0; } public void draw(Canvas c) { /* p.setColor(Color.WHITE); if(name != null) c.drawText(name, getLeft(), getTop(), p); */ p.setColor(Color.BLACK); if(name != null) { Rect bounds = new Rect(); c.drawText(name, getLeft(), getTop(), p); setBackgroundColor(Color.WHITE); p.getTextBounds(name, 0, name.length(), bounds); c.drawRect(bounds, p); } } }
Pero, no funciona. Tengo ese extraño rectángulo.
- Cómo configurar el texto en el centro en la aplicación ListView android?
- Cómo resuelve la forma redonda rect demasiado grande para ser representada en una textura en android TextBox
- Cómo agregar el título del botón en el botón de imagen
- El botón se mueve al agregar texto de varias líneas
- Cómo obtener líneas máximas de texto
- Problema de recorte de texto de Android con EditView dentro de un TableLayout
- Canvas.drawText (...) no imprime linebreak
- ¿Cómo centrar el texto horizontal y verticalmente en un TextView en Android?
Un tamaño de texto se mide desde su línea de base, y tiene un ascenso (hacia arriba, así que -y) y descenso (hacia abajo, y). El primer valor y en su rect (-10) es el ascenso, el segundo el descenso (3). El ancho del texto es 41 (42-1). La altura es así | ascenso | Descenso | Es 10 + 3 = 13;
Del p.getFontMetrics()
modo p.getFontMetrics()
tiene atributos superior e inferior, que describen el mayor ascenso y descenso de la fuente que está utilizando tienen. Si desea calcular la altura de un texto, entonces su Math.abs(p.ascent) + Math.abs(p.descent)
También puede medir el ancho de un texto con p.measureText()
.
Puede utilizar Paint.setTextSize()
para establecer el tamaño del texto y luego pintarlo en el Canvas
.
- Error al crear MediaPlayer con Uri o archivo en activos
- Cómo implementar una base de datos de objetos de uno a muchos en sqlite para android