从textView文本长度派生布局参数宽度

时间:2017-09-14 15:35:50

标签: android textview

我想以编程方式设置textView的宽度。我希望宽度随textView的文本(值)的长度而变化。 textView的文本不能换行。如果textView的文本是" OLA OMO ALARE",如何在下面的代码中使用此字符串(13)的长度来导出将lp.width设置为的正确值?

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

我尝试了下面的代码,但宽度不够长,因此文本自动包装在textView中。

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

感谢。

2 个答案:

答案 0 :(得分:0)

1)你必须使用Rect实例。

2)然后你需要在textView的getPaint()getTextBound()方法中使用它,这些方法允许你放置文本视图的文本。

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

答案 1 :(得分:0)

使用ViewGroup.LayoutParams.WRAP_CONTENT常量。

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