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



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

例如,我制作了一个完美的"预制"布局,它具有我需要的所有内容(其他布局,文本视图,按钮等)。

我希望能够在代码中重新创建完全相同的布局,因此,当我运行该应用程序时,它将创建许多这些。

有什么想法?

对于静态布局xml是首选的选择。但是,您可以在Java(或Kotlin)代码中动态创建代码中的任何布局。由于您没有要求进行特定的布局创建,因此我为您提供了一个示例代码,您可以在其中看到如何在Java中创建的情况而不夸大XML文件:

步骤1-为所有视图和ViewGroups创建Java对象

LinearLayout ll = new LinearLayout(Context object);

//上下文对象不过是在Android OS中访问系统资源和服务的一种方法(我们将使用'this')也是上下文是超级类活动

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-设置我们的视图和视图组的其他属性,例如颜色,大小,重力等。

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

步骤4-在各个顺序中添加所有视图

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

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

setContentView(ll);

最新更新