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

2024-04-09

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

我正在开发一个 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。这只是一个“相对布局”。

EDIT2:

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


创建一个按钮 -

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);

如需其他自定义,请检查文档 http://developer.android.com/reference/android/widget/Button.html.


如果您要创建多个按钮,那么我建议设置 id。This https://stackoverflow.com/a/12298472/3886922例子就很清楚了。


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

欲了解更多详情,请查看数据存储 http://developer.android.com/guide/topics/data/data-storage.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android 中动态创建/删除按钮 的相关文章

随机推荐

  • 可以放在桌子的底部吗?

    我想用一个 tfoot 表中的标签在语义上是正确的 但它一直显示在我的表的顶部 有没有办法让它显示在底部 正如其他人所说 tfoot是在之前定义的tbody但之后渲染 这是设计使然 不会改变语义 桌子有头 脚和身体 这些的顺序并不重要 Th
  • simple_form 提交的默认disable_with

    我想更改 simple form 中提交按钮的默认行为 这样我就不需要为所有表单显式指定 disable with gt true 如何在 simple form rb 中进行此特定更改 这在较新版本的 Rails 中略有不同 因为不推荐设
  • 纯js按属性名称开头选择元素

    语境 HTML div div div div p p 我想选择属性名称以以下开头的所有元素ng 使用 jQuery 以下链接是最接近此问题的线程 jQuery 如何按属性名称开头选择值 https stackoverflow com qu
  • java.net.UnknownHostException:www.google.com

    我正在开发一个健全性检查网络应用程序 我尝试使用 HttpUrlConnection 方法获取 url 响应 但收到 UnknownHostException System setProperty java net preferIPv4St
  • 使用 Kerberos、Web API 和 MVC 的示例项目

    是否有完整的 Visual Studio 解决方案 其中包含具有使用 Kerberos 进行身份验证的 MVC 应用程序的项目 这反过来又调用 ASP Net Web API 服务项目 在同一解决方案中 在服务调用期间将凭据委托给服务 Ge
  • UILabel - 已弃用方法“adjustsLetterSpacingToFitWidth”的替代方法

    因此 在我的代码中 我正在检查我的字符是否适合我的标签 并有以下行 return self adjustsLetterSpacingToFitWidth 这被放置在一个实现中UILabel 有人能告诉我确切的替代方案是什么吗 文档说 使用N
  • 具有 Linq-to-SQL 的 ADO.NET 数据服务

    在将 linq to sql 与 ado net 数据服务结合使用时 我遇到了一个奇怪的错误 我有一个连接到远程数据库的简单 silverlight 应用程序 我首先添加了 linq to sql 类并将一个表拖到设计器上 然后我添加了 A
  • 从 Pyspark 中包含时间戳的字符串列中提取日期

    我有一个数据框 其日期格式如下 date May 6 2016 5 59 34 AM 我打算以以下格式从中提取日期YYYY MM DD 所以结果应该是上述日期 2016 05 06 但是当我提取时使用以下内容 df withColumn p
  • Spark 无法再执行作业。执行器创建目录失败

    我们已经有一个小型 Spark 集群运行了一个月 它已经成功执行了作业 或者让我为该集群启动一个 Spark shell 无论我向集群提交作业还是使用 shell 连接到集群 错误总是相同的 root SPARK HOME bin spar
  • Javascript 按布尔属性对对象数组进行排序

    有关实际问题 请参阅最后的编辑 a false true true true true true true true true true true true true true true true true true true true t
  • 如何仅显示可组合项几秒钟?

    我有一个Text可组合在一个Box Box modifier Modifier Text text BlaBla 如何仅显示框 文本几秒钟 您可以使用LaunchedEffect并使用布尔标志延迟并在指定时间后将其设置为 false Com
  • 求 3d 中 2 个任意立方体的交集

    所以 我想找出一个函数 可以让您确定两个任意旋转和大小的立方体是否相交 如果立方体的旋转不是任意的 而是锁定到特定的轴 则相交很简单 您可以通过检查它们的边界来检查它们是否在所有三个维度上相交 以查看它们在所有三个维度上是否相交或在彼此之内
  • 方法和可选参数

    我在 Apple 文档中读到 我们可以在 Objective C 方法调用中使用可选参数 Apple 文档中的示例 采用可变数量参数的方法也是可能的 尽管它们有点罕见 额外的参数用逗号分隔 在方法名称末尾之后 与冒号不同 逗号不是 被视为名
  • 在 vb.net 中进行数学计算,就像在 javascript 中进行 Eval 一样

    有没有什么方法可以解析 vb net 中的字符串 例如内置方法 可以像 Eval 一样进行数学运算 例如 3 7 3 5 作为字符串将返回 2 我不是要求你为我编写这个代码 我只是想知道是否有built in这样做的方法 如果没有我会自己编
  • 将输出从 Python 记录器重定向到 tkinter 小部件

    花了一些时间重定向 stdout 并将输出记录到 tkinter 文本小部件后 我决定需要一些帮助 我的代码如下 usr bin env python from Tkinter import import logging from thre
  • Flask的send_file和send_from_directory有什么区别?

    我仍然不清楚何时使用send file什么时候send from directory 我在受保护的文件夹中有一个文件 我可以通过这两种方法访问该文件 所以也许有人有一个例子可以清楚地表明应该使用哪个函数 app route sfile
  • 无法在 android 中对 ImageViews 使用 srcCompat

    我正在使用设计支持库 23 2 我已在 build gradle 中添加了这些行 因为我的 Gradle 插件版本为 1 5 defaultConfig applicationId com abc xyz minSdkVersion 16
  • Spring Boot GS:ConnectionFactory 的 ComponentScan 和 ClassNotFoundException

    我正在玩 Spring Boot 入门指南 但自动配置失败 我得到 java lang ClassNotFoundException javax jms ConnectionFactory 看来这是由于 Application 类的位置所致
  • 安装以太坊时出错:软件包“ethereum”没有安装候选者

    我按照本文中的步骤在 Ubuntu 17 10 上安装以太坊 https medium com mvmurthy full stack hello world voting ethereum dapp tutorial part 2 30b
  • 在 Android 中动态创建/删除按钮

    首先 如果这个答案已经在这里 我很抱歉 因为我已经搜索了几个星期 但还没有找到任何东西 我正在开发一个 Android 应用程序 它需要允许用户创建和删除按钮 我知道如何通过将按钮添加到 XML 文件并在 JAVA 文件中创建其功能来通常静