¿Cómo conseguir la altura del texto con el ancho fijo y conseguir la longitud del texto que cabe en un marco?
Bueno, he logrado encajar todas mis preguntas en el título. Necesito romper un texto largo en las columnas / los marcos y la disposición ellos adentro para ver. He estado buscando soluciones por un par de días, pero no puedo encontrar ejemplos ni documentación clara sobre cómo completar cualquiera de mis tareas. He visto algunas menciones de StaticLayout, pero no sé cómo usarlo correctamente. En cuanto a la altura del texto, he intentado el método getTextBounds de TextPaint, pero no tiene límite de ancho y parece que mide sólo una línea (bueno, tal vez estaba haciendo algo mal).
Tal vez alguien tiene un ejemplo de StaticLayout o su uso de subclases?
- Obtener la altura del texto incluyendo el tamaño de fuente y establecer esa altura
- Android - Cómo dibujar en vista
- Cómo convertir rgb color a int en java
- Cómo dibujar texto con diferentes trazos y colores de relleno?
- Paint.setAntiAlias (false) no tiene efecto?
Todo parece tan simple "en papel": crea "marco", comprueba cuántos caracteres encajan en él, rellena el marco y posicionalo, repite hasta el final del texto y, sin embargo, no encuentro nada sobre cómo hacerlo 🙂
- Cómo crear este tipo de pincel para pintar en android
- Bitmapshader y canvas.scaling android
- ¿Cómo evitar que drawBitmap de Android sólo dibuje imágenes en negro?
- Android cómo dibujar la pintura en mano libre en MapView con superposición?
- ¿Cómo dibujo texto en negrita en un mapa de bits?
- Detección de color de la imagen de fondo con Android Paint
- Cómo calcular el porcentaje de área borrada de un mapa de bits en android?
- Asegúrese de que el área del mapa de bits sea transparente al tocar
No conozco la respuesta exacta a su pregunta, pero generalmente se puede calcular el ancho y la altura de un texto basado en el tipo y el tamaño de la fuente utilizando los métodos disponibles en la biblioteca gráfica.
Lo he hecho en C # y Java. En C # se llama "MeasureString", y en Java, "FontMetrics".
EDITAR:
Vea si este código es útil (no lo he compilado porque no tengo Android SDK aquí):
String myText=""; String tempStr=""; int startIndex=0; int endIndex=0; //calculate end index that fits endIndex=myPaint.breakText(myTest, true, frameWidth, null)-1; //substring that fits into the frame tempStr=myText.substring(startIndex,endIndex); while(endIndex < myText.length()-1) { //draw or add tempStr to the Frame //at this point //set new start index startIndex=endIndex+1; //substring the remaining of text tempStr=myText.substring(startIndex,myText.length()-1); //calculate end of index that fits endIndex=myPaint.breakText(tempStr, true, frameWidth, null)-1; //substring that fits into the frame tempStr=myText.substring(startIndex,endIndex); }
Métodos similares están disponibles para Android:
breakText(String text, boolean measureForwards, float maxWidth, float[] measuredWidth)
Mida el texto, deteniéndolo temprano si la anchura medida excede maxWidth.
measureText(String text)
Devuelve el ancho del texto.
http://developer.android.com/reference/android/graphics/Paint.html
- Cambiar la imagen enConfigurationChanged
- Dependencia de Gradle que causa error "Número mágico inválido"