横幅が画面一杯の8割に設定されているTextViewに9文字でTextViewいっぱいになるようなFontサイズに設定したいです。
実現にはどのような方法がありますでしょうか?
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
Android SDKの機能を使って行うなら、Autosizing TextViewsを用いればいいのではないでしょうか。
xml
1 <TextView 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 app:autoSizeTextType="uniform" />
app:autoSizeTextTypeの値をuniformにすることが、オートサイジングの有効化になります。フォントサイズの上限、下限などを指定したいときの設定もドキュメントに掲載されています。
投稿2018/12/09 07:32
総合スコア6768
0
ベストアンサー
「9文字でいっぱい」となると固定幅フォントでの話になりますが、
for (int i = 0; ; i++) { ・iをフォントサイズとしてFontMetricsを使って9文字の横幅取得 ・その横幅とTextViewの横幅を比較 ・もしTextViewの方が狭ければフォントサイズはi - 1、ループから抜ける }
こんな感じの流れかと。
投稿2018/12/09 01:16
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
下記のようにかいてみたのですがうまくいきません。。。
現状デフォルトの大きさから何の変化もみられません。
FontMetricsを調べたらPaintで横幅を取得していたので下記のようにやってみました。
どこかおかしなところはありますでしょうか?
val textView = findViewById<TextView>(R.id.textView)
var fontSize = 0.0F
val paint = Paint()
textView.text = "999999999"
while (textView.width > paint.measureText(textView.text as String)){
fontSize ++
textView.textSize = fontSize
}
textView.textSize = fontSize - 1
textView.text = "0"
}
退会済みユーザー
2018/12/09 12:01
おっと、ごめんなさい、FontMetricsはAWTでしたね。
で、そのコードの問題ですが、paintにFontが設定されていませんね。それ以外は時に問題ないと思います(Kotlinは触ったことがないので想像ですが)。
2018/12/09 12:44
すみません。paintにfontとはどういうことでしょうか?具体的にpaintに対してどんな処理をすれば良いのでしょうか?
よろしくお願いします。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/09 07:35 編集
2018/12/09 14:14