Ну, если вы хотите, чтобы текст, который можно сделать в обычном режиме (как и в повороте на 0 градусов), но масштаб для удовлетворения границы View, вы можете использовать что-то вроде этого:
public class ScalingTextCustomTextView extends CustomTextView {
public ScalingTextCustomTextView(Context context) {
super(context);
}
public ScalingTextCustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int height = getMeasuredHeight();
refitText(this.getText().toString(), parentWidth);
this.setMeasuredDimension(parentWidth, height);
}
@Override
protected void onTextChanged(final CharSequence text, final int start, final int before, final int after) {
refitText(text.toString(), this.getWidth());
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
if(w != oldw)
refitText(this.getText().toString(), w);
}
private void refitText(String text, int textWidth) {
if(textWidth <= 0)
return;
int targetWidth = textWidth - this.getPaddingLeft() - this.getPaddingRight();
float hi = 200;
float lo = 2;
final float threshold = 0.5f;
Paint temp = new Paint();
temp.set(getPaint());
while((hi - lo) > threshold){
float size = (hi + lo)/2;
temp.setTextSize(size);
if(temp.measureText(text) >= targetWidth)
hi = size;
else lo = size;
}
this.setTextSize(TypedValue.COMPLEX_UNIT_PX, lo);
}
}`
Если вы хотите, чтобы повернуть на 45 градусов, вы можете просто добавить:
@Override
public void onDraw(Canvas canvas){
canvas.save();
canvas.rotate(45, canvas.getWidth()/2, canvas.getHeight()/2);
super.onDraw(canvas);
canvas.restore();
}
Но если вы хотите, чтобы масштаб немного больше, чтобы соответствовать самому большому расстоянию, вы должны настроить refitText для вычисления целевых ширинов на основе на расстоянии fr om сверху вниз вправо-вправо.
Это должно указывать на вас в правильном направлении.
Do у вас есть код, с которым мы можем работать для начала? –
@ Roman Rozenshtein Это только размер шрифта, который мне нужен, мне не нужны предложения о других вещах – P5music