猿问

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

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

假设我有一个LinearLayout,我想在我的程序中从Java代码中添加一个视图。这是用什么方法做的?我并不是在问XML是如何实现的,我知道XML是如何实现的,而是我如何按照这个示例代码的思路来做一些事情呢?

(One View).add(Another View)

就像挥杆一样。


慕容3067478
浏览 280回答 3
3回答

慕尼黑5688855

呼叫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中以正确显示。

慕仙森

虽然为时已晚,但这可能会帮助某人:)以编程方式添加视图,请尝试如下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);这将以编程方式创建整个视图。您可以添加相同数量的视图。希望这能帮上忙。*)
随时随地看视频慕课网APP

相关分类

Android
我要回答