我有一个自定义组件,我知道宽度和高度总是如下:
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_width
,layout_height
,它就会消失。
我也尝试覆盖onFinishInflate()
,但永远不会被调用。我尝试继承View
,ViewGroup
和TableLayout
。我试过调用getLayoutParams()
,但它返回null。
如何让我的自定义组件不需要在XML中指定这些?
请不要嗤之以鼻。
感谢。
答案 0 :(得分:1)
你有答案,
LayoutParams layoutParams = new LayoutParams(width,height); setLayoutParams(的LayoutParams);
高度和宽度在px,dip,sp
中指定或者,其中一些提供了setHeight和setWidth方法,您可以使用它们。