¿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?

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 🙂

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

  • Captura de pantalla
  • Dibujar mapa de bits girado con anti alias
  • Cepillo personalizado de Android
  • SetShadowLayer Diferencias de la API de Android
  • Android: firma digital con Bezier
  • Android conjunto de la fuente personalizada a una pintura
  • Cómo obtener el ancho del texto cuando el ajuste de varios spannable
  • ¿Cómo dibujo una línea blanca semitransparente?
  • Android: ¿qué hace esta bandera Paint: DEV_KERN_TEXT_FLAG?
  • ¿Definir un estilo de pintura, color, etc en XML?
  • Patrón de relleno en Imagen en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.