【发布时间】:2011-01-31 18:18:46
【问题描述】:
谁能帮助我如何通过代码而不是 XML 将 TextView 的宽度设置为 wrap_content?
我在代码中动态创建TextView,那么无论如何如何通过代码将其宽度设置为wrap_content?
【问题讨论】:
谁能帮助我如何通过代码而不是 XML 将 TextView 的宽度设置为 wrap_content?
我在代码中动态创建TextView,那么无论如何如何通过代码将其宽度设置为wrap_content?
【问题讨论】:
TextView pf = new TextView(context);
pf.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
对于ConstraintLayout等不同的布局,他们有自己的LayoutParams,像这样:
pf.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
或
parentView.addView(pf, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
【讨论】:
android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
还有另一种方法可以达到相同的效果。如果您只需要设置一个参数,例如“高度”:
TextView textView = (TextView)findViewById(R.id.text_view);
ViewGroup.LayoutParams params = textView.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(params);
【讨论】:
LinearLayout 上完成的,那么ll.invalidate() 似乎没有必要。为什么?
将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
【讨论】:
关于这篇文章的一点更新:如果您在 Android 项目中使用 ktx,有一个小帮助方法可以让更新 LayoutParams 变得更加容易。
如果您想更新,例如只有你可以在 Kotlin 中使用以下行来做到这一点的宽度。
tv.updateLayoutParams { width = WRAP_CONTENT }
【讨论】:
我正在发布基于 android Java 的多行编辑文本。
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 */
【讨论】:
我认为这段代码回答了你的问题
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)
holder.desc1.getLayoutParams();
params.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
holder.desc1.setLayoutParams(params);
【讨论】: