2017-09-14 36 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

爲什麼你不想要它WRAP?這是非常直接的.. –

回答

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);