2011-03-18 83 views
1

我有一个自定义组件,我知道宽度和高度总是如下:设置自定义组件高度/宽度编程方式

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中指定的组件?

请不要嗤之以鼻。

谢谢。

+0

试试这个http://androidactivity.wordpress.com/2011/10/04/use-dip-sp-metrics-programmatically/而不是setWidth尝试setMinWidth希望它有帮助 – 2011-10-04 15:11:41

回答

1

您有答案,

的LayoutParams的LayoutParams =新的LayoutParams(宽度,高度); setLayoutParams(layoutParams);

高度和宽度以像素,DIP,SP指定

另外,他们中的一些提供自动调用setHeight和setWidth方法,你可以使用它们。

+0

正如我所说,这是行不通的。它执行,但在施工后仍会抛出相同的异常。谢谢您的好意。 – user405821 2011-03-18 05:59:17

+1

高度和宽度提供在哪一个? px,dip或sp?它不能一次全部都是,对吧?假设我做了新的LayoutParams(10,10),它是10倾角? 10 px? 10 sp? – 2012-04-15 03:55:22

相关问题