2012-07-02 17 views
15

He estado tratando de hacer una circular TextView. Es un círculo en el que quiero acomodar todo el espacio por encima de una burbuja circular, como se muestra en la imagen a continuación.Cómo tener un TextView circular

Amablemente ver imagen adjunta.

Circular bubble with text in side

En esta imagen, tenemos un nivel esférico con el texto circular en ella. Ya he intentado configurar la forma oval .xml como fondo de TextView pero aún no tuve suerte.

Edit:

A medida que aumenta la longitud del texto. Debe reducirse en tamaño para caber dentro del círculo. Esta es la parte más difícil de pensar.

Respuesta

10

lo necesario para crear una vista personalizada , que se extiende desde TextView probablemente, fijando el círculo como imagen de fondo, y calcular el ancho de texto/romper las líneas manualmente de acuerdo a la anchura del texto.

para calcular el ancho de una cadena, ver How to calculate string font width in pixels?

Algunos de matemáticas y cálculos que se requiere, por supuesto, para medir el espacio disponible por línea; pero creo que esa es la única forma, ya que no hay un componente estándar para hacerlo.

Para colocar el texto en la vista, use drawText del Canvas class.

+2

+1, no hay un componente incorporado para esto. Además, crear vistas personalizadas es divertido :) – Felix

+0

Usted dijo: "calcule el ancho del texto/rompa las líneas manualmente de acuerdo con el ancho del texto". Esto debe ser dinámico para caber dentro de texto de longitud variable dentro del círculo. ¿Cómo podría medir el número de líneas que mi texto rellenará dentro del círculo? –

+0

Creo que medirías el texto completo como una cadena, que te da el ancho completo necesario en px. Luego debe calcular el espacio de px por línea, comenzando desde el centro hacia el exterior. No tengo una fórmula para eso, pero esa es probablemente la forma en que comenzaría a investigarlo. Agregar saltos de línea y luego contar cuántos saltos de línea necesita. Por supuesto, este es un tipo de cálculo "dinámico", ya que el número de líneas está directamente relacionado con la longitud de la secuencia de cada línea. Estoy seguro de que es un poco complicado y no tan fácil, pero se puede hacer ;-) –

Cuestiones relacionadas