私はここでこれをよく検索しましたが、解決策を見つけることができません。
整数を含むRelativeLayoutにTextViewがあります。数値の範囲は1〜99です。TextViewのサイズを変更して、「1」しか含まれていない場合でも、その幅が常に文字列「99」の幅になるようにする方法を教えてもらえますか?
このTextViewの右側のコンポーネントの位置はその幅に依存するため、これが必要です。したがって、すべてがTextViewに含まれる桁数に応じた位置になります。
これがXMLで行われるのか、コードで行われるのかは関係ありません。TextViewの幅をピクセル単位で設定する必要はありません。
考えられる解決策をありがとう。重要な情報を見逃していないか尋ねてください!
これを試して:
Android:layout_width="wrap_content"
Android:minEms="2"
フォントがモノスペースの場合、Emsは機能します。プロポーショナルフォントの場合、2つの「m」ではなく2つの「0」の幅が必要です。次のようにTextPaint.measureTextにフォールバックできます。
float measureText = Zip.getPaint().measureText("00000");
Zip.setWidth(Zip.getPaddingLeft() + Zip.getPaddingRight() + (int) measureText);
最良の方法はTextPaint
を使用することです。簡単な例を次に示します。
TextPaint textPaint = new TextPaint();
textPaint.setTextSize(yourTextView.getTextSize());
yourTextView.setMinWidth((int) textPaint.measureText("-88.88"));
TextPaintオブジェクトでテキストサイズを指定することを忘れないでくださいmeasureText
に、表示されると予想される最長の文字列を入力します(テキストが100未満の正または負の数値を処理でき、カンマの後に2桁の数字があると仮定して、「-88.88」と記述しました)
PaintクラスでgetTextBounds()メソッドを探していると思います。自分で試してみませんでした。