如何动态添加布局及其子项

时间:2017-09-22 15:15:34

标签: java android

如何使用代码动态添加包含不同对象的布局。

例如,我做了一个完美的"预制"布局,其中包含我需要的一切(其他布局,文本视图,按钮等)。

我希望能够在代码中重新创建这个完全相同的布局,所以当我运行应用程序时,它会创建大量的这些。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对于静态布局,XML是首选。但是,您可以在Java(或Kotlin)代码中动态地在代码中创建任何布局。由于您没有要求创建特定的布局,因此我将为您提供一个示例代码,您可以在其中查看如何在不使用XML文件的情况下使用Java创建布局:

第1步 - 为所有视图和ViewGroup创建Java对象

LinearLayout ll = new LinearLayout(Context object);

// Context对象只是一种在Android OS中访问系统资源和服务的方式(我们将使用'this')另外Context是Activity的超类

TextView tv = new TextView(Context object);
Button b = new Button(Context object);

第2步 - 定义所有视图和视图组的维度。使用LinearLayout.LayoutParams对象

指定每个子项的布局信息
LinearLayout.LayoutParams dimensions = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
ll.setLayoutParams(dimensions);
LinearLayout.LayoutParams dimensions2 = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(dimensions2);
b.setLayoutParams(dimensions2);

第3步 - 设置Views和ViewGroups的其他属性,如颜色,大小,重力等。

ll.setOrientation(LinearLayout.VERTICAL);
tv.setText("some text");
b.setText("Button");

步骤4 - 按相应的顺序将所有视图添加到根ViewGroup

ll.addView(tv);
ll.addView(b);

步骤5 - 将内容视图设置为根布局。 (通过在活动的onCreate()方法中调用setContentView()方法)

setContentView(ll);