首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何以编程方式将视图添加到视图

如何以编程方式将视图添加到视图
EN

Stack Overflow用户
提问于 2010-03-07 17:31:45
回答 5查看 242.2K关注 0票数 204

假设我有一个LinearLayout,我想在我的程序中通过Java代码向它添加一个视图。使用的是什么方法?我并不是问它是如何用XML实现的,我确实知道这一点,但我想问的是,我如何才能像这个示例代码那样做一些事情呢?

代码语言:javascript
复制
(One View).add(Another View)

就像在Swing中可以做的那样。

EN

回答 5

Stack Overflow用户

发布于 2010-03-08 04:36:47

调用addView是正确的答案,但您需要做更多的工作才能使其工作。

如果通过构造函数(例如,Button myButton = new Button();)创建视图,则在将新构造的子视图添加到父视图之前,需要在新构造的视图上调用setLayoutParams,并传入父视图的LayoutParams内部类的实例。

例如,假设您的LinearLayout具有id R.id.main,则您的onCreate()函数中可能包含以下代码

代码语言:javascript
复制
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。

票数 279
EN

Stack Overflow用户

发布于 2014-02-19 18:35:04

这已经很晚了,但这可能会对某些人有所帮助:) :)要以编程方式添加视图,请尝试如下所示

代码语言:javascript
复制
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);

这将以编程方式创建整个视图。您可以添加任意数量的相同视图。希望这能有所帮助。:)

票数 27
EN

Stack Overflow用户

发布于 2010-03-07 19:26:01

LinearLayoutViewGroup的子类,后者有一个名为addView的方法。addView方法应该是您想要的。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2395769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档