假设我有一个LinearLayout
,我想在我的程序中通过Java代码向它添加一个视图。使用的是什么方法?我并不是问它是如何用XML实现的,我确实知道这一点,但我想问的是,我如何才能像这个示例代码那样做一些事情呢?
(One View).add(Another View)
就像在Swing中可以做的那样。
发布于 2010-03-08 04:36:47
调用addView
是正确的答案,但您需要做更多的工作才能使其工作。
如果通过构造函数(例如,Button myButton = new Button();
)创建视图,则在将新构造的子视图添加到父视图之前,需要在新构造的视图上调用setLayoutParams
,并传入父视图的LayoutParams内部类的实例。
例如,假设您的LinearLayout具有id R.id.main
,则您的onCreate()
函数中可能包含以下代码
LinearLayout myLayout = findViewById(R.id.main);
Button myButton = new Button(this);
myButton.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
myLayout.addView(myButton);
确保设置LayoutParams是很重要的。每个视图至少需要一个layout_width和一个layout_height参数。另外,获得正确的内部类也很重要。我一直在努力让视图添加到TableRow中才能正确显示,直到我发现我没有将TableRow.LayoutParams的实例传递给子视图的setLayoutParams。
发布于 2014-02-19 18:35:04
这已经很晚了,但这可能会对某些人有所帮助:) :)要以编程方式添加视图,请尝试如下所示
LinearLayout rlmain = new LinearLayout(this);
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT);
LinearLayout ll1 = new LinearLayout (this);
ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.logo);
LinearLayout .LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
iv.setLayoutParams(lp);
ll1.addView(iv);
rlmain.addView(ll1);
setContentView(rlmain, llp);
这将以编程方式创建整个视图。您可以添加任意数量的相同视图。希望这能有所帮助。:)
发布于 2010-03-07 19:26:01
LinearLayout是ViewGroup的子类,后者有一个名为addView的方法。addView方法应该是您想要的。
https://stackoverflow.com/questions/2395769
复制相似问题