¿Cómo obtener el ancho de la cadena en Android?
Me gustaría obtener la altura también si es posible.
- Android que convierte la cadena a la secuencia de la matriz
- Cadenas en android / java, replace () no hace nada
- Conversión de una cadena en un entero en Android
- Sqlite cómo obtener elementos de cadena con el cursor
- Escapar% en las preferencias de ICS - ¿Realmente tengo que escribir la manipulación de versiones específicas de la cadena?
- Comparación de cadenas en Java
- ¿Es posible tener más de un archivo de recursos de cadena en Android?
- Cadena que contiene caracteres especiales convertidos a la representación de escape en Android - cómo evitar esto?
- Android - java - contar palabras
- ¿Es posible establecer el color de una cadena directamente en string.xml?
- ¿Es var str: String mutable o inmutable?
- Extraer una línea de un EditText
- Uso de Intents para transmitir datos de tonos de llamada
Puede utilizar el getTextBounds(String text, int start, int end, Rect bounds)
de un objeto Paint. Puede utilizar el objeto de pintura proporcionado por un TextView
o crear uno con la apariencia de texto deseada.
Utilizando una vista de texto, puede hacer lo siguiente:
Rect bounds = new Rect(); Paint textPaint = textView.getPaint(); textPaint.getTextBounds(text, 0, text.length(), bounds); int height = bounds.height(); int width = bounds.width();
Si sólo necesita el ancho que puede utilizar:
float width = paint.measureText(string);
http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String)
Hay dos medidas de ancho diferentes para un texto. Uno es el número de píxeles que se ha dibujado en el ancho, el otro es el número de 'píxeles' el cursor debe avanzar después de dibujar el texto.
Paint.measureText y paint.getTextWidths devuelve el número de píxeles (en flotante) que el cursor debe avanzar después de dibujar la cadena dada. Para el número de píxeles pintados use paint.getTextBounds como se menciona en otra respuesta. Creo que esto se llama el "Avance" de la fuente.
Para algunas fuentes estas dos medidas difieren (mucho), por ejemplo la fuente Black Chancery tiene letras que se extienden más allá de las otras letras (solapamiento) – vea el capitulo 'L'. Use paint.getTextBounds como se menciona en otra respuesta para obtener píxeles pintados.
He medido el ancho de esta manera:
String str ="Hiren Patel"; Paint paint = new Paint(); paint.setTextSize(20); Typeface typeface = Typeface.createFromAsset(getAssets(), "Helvetica.ttf"); paint.setTypeface(typeface); paint.setColor(Color.BLACK); paint.setStyle(Paint.Style.FILL); Rect result = new Rect(); paint.getTextBounds(str, 0, str.length(), result); Log.i("Text dimensions", "Width: "+result.width());
Esto te ayudaría.
- ¿Cómo puedo mostrar un documento PDF en una vista Web?
- ¿Cuál es la forma más fácil de obtener el día actual de la semana en Android?