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

Posted

技术标签:

【中文标题】在 Android 中动态创建/删除按钮【英文标题】:Dynamically Creating/Removing Buttons in Android 【发布时间】:2015-04-20 06:54:54 【问题描述】:

首先,如果这个答案已经在这里,我很抱歉,因为我已经搜索了几个星期但还没有找到任何东西。

我正在开发一个需要允许用户创建和删除按钮的 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,但从来不知道我能够为实际布局本身这样做!

【问题讨论】:

这是一个非常笼统的问题。这表明您在提出问题之前没有进行研究。如果您尝试搜索而不是直接在SO上询问,您可以轻松找到答案跨度> 看这个:***.com/questions/14826822/… 我已经发布了一个代码,您可以在其中看到如何动态添加、修改和删除视图。 【参考方案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。

【讨论】:

【参考方案2】:
ViewGroup mViewGroup = (ViewGroup) findViewById(R.id.main_layout_id);
mViewGroup.addView(yourButton, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));

【讨论】:

以上是关于在 Android 中动态创建/删除按钮的主要内容,如果未能解决你的问题,请参考以下文章

保存动态创建的按钮android

如何在 android 中实用地添加和删除布局?

动态创建或删除表单元素

Android:创建自定义视图并将其动态添加到布局中

用户单击按钮时如何动态创建和删除视图[重复]

需要在按钮单击时隐藏/取消隐藏动态创建的下拉列表