以编程方式设置自定义组件高度/宽度

时间:2011-03-18 04:30:18

标签: android view custom-controls android-layout tablelayout

我有一个自定义组件,我知道宽度和高度总是如下:

android:layout_width="fill_parent" 

android:layout_height="wrap_content"

我希望避免在XML中指定宽度和高度,因为任何其他设置都是错误的。

我尝试了很多东西,但没有任何作用。例如,此代码不起作用:

public class MyLayout extends ViewGroup {...

LayoutParams layoutParams = 
new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
setLayoutParams(layoutParams);

但无论我做什么,我都会收到异常消息“你必须提供layout_width属性”。如果我放回XML layout_widthlayout_height,它就会消失。

我也尝试覆盖onFinishInflate(),但永远不会被调用。我尝试继承ViewViewGroupTableLayout。我试过调用getLayoutParams(),但它返回null。

如何让我的自定义组件不需要在XML中指定这些?

请不要嗤之以鼻。

感谢。

1 个答案:

答案 0 :(得分:1)

你有答案,

LayoutParams layoutParams = new LayoutParams(width,height); setLayoutParams(的LayoutParams);

高度和宽度在px,dip,sp

中指定

或者,其中一些提供了setHeight和setWidth方法,您可以使用它们。