2017-09-14 7 views
0

プログラムでtextViewの幅を設定したい。 TextViewのテキスト(値)の長さによって幅を変えたい。 textViewのテキストを折り返してはいけません。 textViewのテキストが "OLA OMO ALARE"の場合、この文字列(13)の長さを使用してlp.widthを設定する正しい値を下のコードでどのように使うことができますか?textViewのテキスト長からレイアウトのパラメータ幅を派生させる

LayoutParams lp = tv.getLayoutParams(); 
    lp.width = 
    tv.setLayoutParams(lp); 

私は以下のコードを試しましたが、十分な長さではありませんでした。したがって、テキストは自動的にtextViewにラップされました。

lp.width = Math.round( tv.getPaint().measureText(tv.getText().toString()))) 

ありがとうございます。

+0

なぜラップしたくないのですか?非常にまっすぐです。 –

答えて

0

1)これには、Rectインスタンスを使用する必要があります。

2)次に、textviewのgetPaint()getTextBound()のメソッドでこれを使用して、textviewのテキストを配置する必要があります。

3)最後に、Rectインスタンスから幅を取得します。

コードはここに実装されているすべてのステップで実装されています。 私はこれをテストして正常に動作します。それが役に立てば幸い。

TextView textView = new TextView(this); 
    textView.setText("AALAP"); 
    Rect rect = new Rect(); 
    textView.getPaint().getTextBounds(textView.getText().toString(), 0, textView.getText().length(), rect); 
    Log.d(TAG, "onCreate: width: "+rect.width()); 
+0

あなたの迅速な対応に感謝します。私はあなたの推薦に従いましたが、派生した幅は十分ではなかったので、テキストは自動的にtextviewでラップされました。私のコード: statusCodeTitle.setText( "Status Code_loplop:");statusCodeTitle.getPaint()。getTextBounds(statusCodeTitle.getText()。toString()、0、statusCodeTitle.getText()。length()、rect); titleMaxWidth = rect.width(); rect.width()が返されました。189 ありがとうございました。 – Ola

0

定数はViewGroup.LayoutParams.WRAP_CONTENTです。

ViewGroup.LayoutParams params = myTextView.getLayoutParams(); 
params.width = ViewGroup.LayoutParams.WRAP_CONTENT; 
myTextView.setLayoutParams(params); 
関連する問題