在Android中动态创建/删除按钮

时间:2015-04-20 06:54:54

标签: java android xml user-interface button

首先,如果这个答案已经在这里,我很抱歉,因为我已经搜索了几周而且还没找到任何答案。

我正在开发一款Android应用,需要允许用户创建和删除按钮。我知道如何通过添加XML文件按钮并在JAVA文件中创建它的功能来静态地创建按钮。

相反,我有一个静态按钮,我将其称为"创建按钮"。当用户按下“创建”按钮时,应该为他们提供向当前活动添加新按钮的选项,允许他们更改所述按钮的标题等。当他们关闭应用程序并将其打开时;他们添加的按钮应该仍然存在。同样,他们应该有一个删除按钮的选项。

有人能指出我正确的方向吗?我遇到的大多数消息来源只解释了如何静态创建按钮,就像我刚才提到的那样。

感谢您的帮助!

编辑:根据我给出的反馈,我能够找出一些东西。

到目前为止,我在onOptionsItemSelected()方法中有以下代码:

    if (id == R.id.add_button) 
        {
        Button myButton = new Button(this);
        myButton.setText("Push Me");
        //myButton.setVisibility(View.VISIBLE);
        return true;    
        }

我仍然对如何将其添加到布局感到困惑。主要是,我对findViewById调用感到困惑:

    RelativeLayout layout = (RelativeLayout)findViewById(R.id.?);

我应该使用哪个ID?在应用程序的主XML文件中,布局本身没有ID。它只是一个" RelativeLayout"。

EDIT2:

实际上,我解决了这个问题。感谢您的建议!我只需要在XML文件中为我的布局提供一个ID。我知道我可以给按钮等ID,但从来不知道我能够为实际的布局本身做到这一点!

2 个答案:

答案 0 :(得分:1)

创建按钮 -

Button myButton = new Button(this);

向其添加文字 -

myButton.setText("Push Me");

要使按钮可见,您需要将其添加到这样的视图中。您还可以将其添加到静态创建的视图 -

LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

ll.addView(myButton, lp);

删除按钮 -

ll.removeView(myButton);

要进行其他自定义,请检查documentation


如果您要创建多个按钮,我建议您设置ID。 This示例说明了这一点。


要在关闭应用程序后使按钮可见,您需要将数据存储在内存中。最简单的方法是在关闭应用程序之前保留按钮及其规格的记录并存储它们。打开应用程序后,您可以读取存储的数据并相应地创建按钮。

有关详细信息,请查看Data Storing

答案 1 :(得分:0)

ViewGroup mViewGroup = (ViewGroup) findViewById(R.id.main_layout_id);
mViewGroup.addView(yourButton, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));