Android Studio Kotlinで、
TextViewからテキストがはみ出る時は、フォントサイズを自動調整して、テキストビュー内に納めるようにしようと思って下記コードを書いているのですが、必要以上に小さくなってしまい、うまくいきません。
どこが間違ってるのかもしわかりましたら教えていただきたいです。
fun TextView.adjustSizeFit () { // // テキストの横幅取得 // var textWidth = paint.measureText(this.getText().toString()); // val textLenght = length() // val newTextSize = textSize * (textWidth / textLenght / textSize) // setTextSize(TypedValue.DENSITY_DEFAULT, newTextSize); val MIN_TEXT_SIZE : Float = 12.0f val paint : Paint = Paint(); val viewWidth = getWidth(); val viewHeight = getHeight(); // 適当に大きめの数値からスタート var textSize = 300f; paint.setTextSize(textSize); var fm : Paint.FontMetrics = paint.getFontMetrics(); var textHeight : Float = (Math.abs(fm.top)) + (Math.abs(fm.descent)) as Float; var textWidth : Float = paint.measureText(this.getText().toString()); while (viewWidth < textWidth || viewHeight < textHeight){ if (MIN_TEXT_SIZE >= textSize){ textSize = MIN_TEXT_SIZE; break; } textSize--; paint.setTextSize(textSize); fm = paint.getFontMetrics(); textHeight = (Math.abs(fm.top)) + (Math.abs(fm.descent)) as Float; textWidth = paint.measureText(this.getText().toString()); } setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize);

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/14 08:16
2017/09/14 08:19
2017/09/14 15:56
2017/09/15 03:49