Android рисует текст в прямоугольник в центре и обрезает его, если необходимо

Я хочу нарисовать текст в прямоугольник по центру (по горизонтали и по вертикали). Если слишком много текста, которые обрезают его, что не вписывается в прямоугольник.

Я пытаюсь сделать это как этот пример показывает, но без везения.

Любые идеи?

Ответ 1

Попробуйте это

private void drawRectText(String text, Canvas canvas, Rect r) {

    textPaint.setTextSize(20);
    textPaint.setTextAlign(Align.CENTER);
    int width = r.width();

    int numOfChars = textPaint.breakText(text,true,width,null);
    int start = (text.length()-numOfChars)/2;
    canvas.drawText(text,start,start+numOfChars,r.exactCenterX(),r.exactCenterY(),textPaint);
}

Ответ 2

эта функция работала для меня.

private void drawDigit(Canvas canvas, int textSize,  float cX, float cY, int color, String text) {
        Paint tempTextPaint = new Paint();
        tempTextPaint.setAntiAlias(true);
        tempTextPaint.setStyle(Paint.Style.FILL);

        tempTextPaint.setColor(color); 
        tempTextPaint.setTextSize(textSize); 

        float textWidth = tempTextPaint.measureText(text);
        //if cX and cY are the origin coordinates of the your rectangle 
        //cX-(textWidth/2) = The x-coordinate of the origin of the text being drawn 
        //cY+(textSize/2) =  The y-coordinate of the origin of the text being drawn 

        canvas.drawText(text, cX-(textWidth/2), cY+(textSize/2), tempTextPaint);
    }

Ответ 3

Как насчет этого?

    <FrameLayout
    android:id="@+id/frameLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView
        android:id="@+id/textView1"
        android:layout_height="40dp"
        android:layout_width="100dp"
        android:layout_gravity="center"
        android:text="TextViewqqqqqqqqqqqwwww"
        android:inputType="text">
    </TextView>
</FrameLayout>