1

现在我想在 FingerPaint api 演示中动态添加按钮。但问题是我不熟悉在 java 文件中动态创建布局。有人知道我如何实现这个类来在标题栏中添加按钮吗?任何代码示例将不胜感激。

4

1 回答 1

2

解释:

1) 获取对插入动态 gui 组件的布局容器的引用。如果容器是动态创建的,则您已经拥有对它的引用。如果它来自 xml 布局,您可以使用findViewById.

2) 创建一个动态组件。您需要将上下文传递给构造函数:使用this.

3) 设置创建的组件属性。

4) 用于container.addView(component)将组件动态添加到容器中。


逐步演示:

1) 使用项目助手创建一个带有默认选项、包test.testMain活动的新 Android 项目。

2) 编辑res/layout/main.xml文件如下。

    <?xml 版本="1.0" 编码="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        机器人:方向=“垂直”
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <线性布局
            机器人:方向=“垂直”
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/layoutId"
            >
        </线性布局>
    </线性布局>

3) 编辑src/test.test/Main.java文件如下。

    包test.test;

    导入android.app.Activity;
    导入android.os.Bundle;
    导入android.view.View;
    导入 android.view.View.OnClickListener;
    导入android.widget.Button;
    导入 android.widget.LinearLayout;
    导入 android.widget.Toast;

    公共类主要扩展活动{
        /** 在第一次创建活动时调用。*/
        @覆盖
        公共无效 onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            设置内容视图(R.layout.main);
            addDynamicButton();
        }

        /**
         * 添加动态按钮。
         */
        私人无效添加动态按钮(){
            // 动态创建按钮
            按钮 btn = 新按钮(此);
            // 设置按钮属性
            btn.setText("我是动态的。请点击我。");
            btn.setOnClickListener(new OnClickListener() {
                @覆盖
                公共无效 onClick(查看 v){
                    Toast toast = Toast.makeText(Main.this, "Yo!", Toast.LENGTH_LONG);
                    toast.show();
                }
            });
            // 检索对容器布局的引用
            LinearLayout 容器 = (LinearLayout)findViewById(R.id.layoutId);
            // 将动态按钮添加到 GUI
            容器.addView(btn);
        }
    }

4) 编译并作为 Android 应用程序运行。现在您知道它是如何工作的,您可以使用这种技术将任何类型的组件添加到任何布局容器中。

于 2011-05-10T08:38:49.487 回答