Android: ¿es Paint.breakText (…) impreciso?
Tengo una vista que dibuja un rectángulo con una línea de texto dentro de él. La vista utiliza texto de ruptura para garantizar que ningún texto se extiende fuera del rectángulo; Ignora cualquier texto que lo haga. Esto funciona bien para algunos personajes, pero a menudo las cuerdas compuestas de 's y' f se extienden fuera del rectángulo. Por lo tanto, estoy en la necesidad de un control de la cordura aquí: ¿Hay alguna falla obvia en mi código de abajo, o es posible que Paint.breakText (…) es inexacta?
public void onDraw(Canvas canvas) { int MARGIN = 1; int BORDER_WIDTH = 1; Paint p = new Paint(); p.setAntiAlias(true); p.setTextSize(12); p.setTypeface(Typeface.create(Typeface.SERIF, Typeface.NORMAL)); RectF rect = getRect(); float maxWidth = rect.width() - MARGIN - BORDER_WIDTH * 2; String str = getText(); char[] chars = str.toCharArray(); int nextPos = p.breakText(chars, 0, chars.length, maxWidth, null); str = str.substring(0, nextPos); float textX = MARGIN + BORDER_WIDTH; float textY = (float) (Math.abs(p.getFontMetrics().ascent) + BORDER_WIDTH + MARGIN); canvas.drawText(str, textX, textY, p); p.setStrokeWidth(BORDER_WIDTH); p.setStyle(Style.STROKE); canvas.drawRect(rect, p); }
- Lona de Android - Dibuja un agujero
- superposición de texto de pintura de Android
- Dibujar la línea en la pintura de los dedos quitar la imagen dibujada previamente
- Problema con la pintura de Android en diferentes API
- Significado de algunas constantes de Paint en Android
- Android: measureText () Retorno de píxeles basados en píxeles escalados
- Cambiar el color en Paint and Canvas en Android
- Cambiar la intensidad de clarear / oscurecer en mapas de bits mediante PorterDuffXfermode en la clase Paint de Android
- Nueva línea al pintar un texto en una imagen
- Cómo dibujar una cadena Spanned con Canvas.drawText en Android
- ¿Cómo configurar un filtro de color para XWalkView? (Resuelto)
- Tratando de crear una pintura de borrador para lienzo
Esto fue arreglado por: Paint.setSubpixelText (true);
El problema podría ser cómo dibujar su rectángulo. Trazos no están fuera del rectángulo, la mitad de la carrera está dentro, la mitad está fuera.