为什么setWidth无法正常工作?

10
例如,在Android中,对于TextView,您必须设置LayoutParams而不是setWidth方法。
TextView tv = new TextView(getContext());
LayoutParams params = new LayoutParams(100, LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(params);

但是为什么呢?在Android文档中,它说这样做会产生相同的结果。


也非常想了解。LayoutParams 是我每次使用它时的一根刺。 - burmat
你尝试在xml中手动操作过吗,以确保父级不会影响它?或者尝试使用.invalidate()。 - Peter Birdsall
setWidth() 可以正常工作,但它可能会被布局参数覆盖。因此,请提供一个 TextViewsetWidth() 不起作用的示例以及该 TextView 所在的布局。 - laalto
正如其他人之前提到的,问题可能在于父视图影响了子视图。此外,在您的示例中使用的LayoutParams属于哪个类(LinearLayout、FrameLayout、AbsoluteLayout等)? - overbet13
1个回答

2

您需要使用layoutParams,因为设置不同的宽度或高度可能会改变布局的所有位置。整个视图层次结构必须适应新的尺寸,唯一的方法是更改布局参数。然后,父级会收到通知并开始测量子视图的过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接