从textView文本长度导出布局参数宽度

问题描述:

我想以编程方式设置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?这是非常直接的.. –

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

使用ViewGroup.LayoutParams.WRAP_CONTENT常数为此。

ViewGroup.LayoutParams params = myTextView.getLayoutParams(); 
params.width = ViewGroup.LayoutParams.WRAP_CONTENT; 
myTextView.setLayoutParams(params);