通过代码将TextView的宽度设置为wrap_content

时间:2011-01-31 18:18:46

标签: android textview

有人可以帮助我如何通过代码而不是XML来设置TextViewwrap_content的宽度吗?

我在代码中动态创建TextView,那么无论如何通过代码将宽度设置为wrap_content

6 个答案:

答案 0 :(得分:103)

TextView pf = new TextView(context);
pf.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

parentView.addView(pf, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

答案 1 :(得分:69)

还有另一种方法可以达到同样的效果。如果您只需要设置一个参数,例如'height':

TextView textView = (TextView)findViewById(R.id.text_view);
ViewGroup.LayoutParams params = textView.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(params);

答案 2 :(得分:39)

TextView宽度更改为换行内容的解决方案。

textView.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT; 
textView.requestLayout();  
// Call requestLayout() for redraw your TextView when your TextView is already drawn (laid out) (eg: you update TextView width when click a Button). 
// If your TextView is drawing you may not need requestLayout() (eg: you change TextView width inside onCreate()). However if you call it, it still working well => for easy: always use requestLayout()

// Another useful example
// textView.getLayoutParams().width = 200; // For change `TextView` width to 200 pixel

答案 3 :(得分:1)

我认为这段代码可以回答您的问题

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) 
holder.desc1.getLayoutParams();
params.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
holder.desc1.setLayoutParams(params);

答案 4 :(得分:0)

我正在发布android Java base多行edittext。

EditText editText = findViewById(R.id.editText);/* edittext access */

ViewGroup.LayoutParams params  =  editText.getLayoutParams(); 
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
editText.setLayoutParams(params); /* Gives as much height for multi line*/

editText.setSingleLine(false); /* Makes it Multi line */

答案 5 :(得分:0)

有关此帖子的一些更新:如果您在Android项目中使用ktx,则有一些帮助程序方法可以使LayoutParams的更新变得更加容易。

如果您想更新例如只有宽度,您可以在Kotlin中使用以下行来做到这一点。

tv.updateLayoutParams { width = WRAP_CONTENT }