为了账号安全,请及时绑定邮箱和手机立即绑定

如何以编程方式向视图添加视图

如何以编程方式向视图添加视图

慕容3067478 2019-07-15 16:23:43
如何以编程方式向视图添加视图假设我有一个LinearLayout,我想在我的程序中从Java代码中添加一个视图。这是用什么方法做的?我并不是在问XML是如何实现的,我知道XML是如何实现的,而是我如何按照这个示例代码的思路来做一些事情呢?(One View).add(Another View)就像挥杆一样。
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

呼叫addView这是正确的答案,但你需要做更多的事情才能让它发挥作用。

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

例如,您可能在您的onCreate()函数假设您的linearLayout有id。R.id.main:

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很重要。每个视图至少需要一个布局宽度和一个布局高度参数。同时,获得正确的内部类也很重要。在我发现没有将TableRow.LayoutParams的实例传递到子视图的setLayoutParams之前,我很难让视图添加到TableRow中以正确显示。


查看完整回答
反对 回复 2019-07-15
?
慕仙森

TA贡献1827条经验 获得超7个赞

虽然为时已晚,但这可能会帮助某人:)以编程方式添加视图,请尝试如下


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);

这将以编程方式创建整个视图。您可以添加相同数量的视图。希望这能帮上忙。*)


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 279 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信