有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何动态添加布局及其子级

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

例如,我制作了一个完美的“预制”布局,其中包含了我需要的所有内容(其他布局、文本视图、按钮等)

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

有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

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

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

    LinearLayout ll = new LinearLayout(Context object);
    

    //上下文对象只不过是访问Android操作系统中系统资源和服务的一种方式(我们将使用“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-将内容视图设置为根布局。(通过在活动的onCreate()方法中调用setContentView()方法)

    setContentView(ll);