Я хотел бы создать квадрат в зависимости от длины текста и возможности его поворота. Я расширил текст и изменил onMeasure, но когда я вращаю его, текст рисуется в верхней части квадрата. Когда он начинает вращаться, текст не вращается вокруг собственной средней точки.Android rotate TextView с собственным расширенным классом TextView
На изображении ниже показан результат текущей ситуации в красном и желаемая ситуация в зеленом цвете. Желтая точка - опорная точка.
Большое спасибо за вашу помощь!
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.TextView;
public class MyTextView extends TextView {
private int angle = 0;
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(),getMeasuredWidth());
}
@Override
protected void onDraw(Canvas canvas) {
canvas.save();
canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop());
canvas.rotate(angle, canvas.getWidth()/2f, canvas.getHeight()/2f);
getLayout().draw(canvas);
canvas.restore();
}
public void setAngle(int textAngle) {
angle = textAngle;
}
}
Вы пытались установить гравитацию? –