Android 中的动态 Creating/Removing 个按钮
Dynamically Creating/Removing Buttons in Android
首先,如果这个答案已经在这里,我深表歉意,因为我已经搜索了几个星期但还没有找到任何东西。
我正在开发一个 Android 应用程序,它需要允许用户创建和删除按钮。我知道如何通过在 XML 文件中添加按钮并在 JAVA 文件中创建它的功能来静态创建按钮。
相反,我有一个静态按钮,我将其称为 "Create Button"。当用户按下创建按钮时,他们应该可以选择向当前 activity 添加一个新按钮,允许他们更改所述按钮的标题等。当他们关闭应用程序并重新打开它时;他们添加的按钮应该仍然存在。同样,应该为他们提供删除按钮的选项。
有人能指出我正确的方向吗?我遇到的大多数资源仅解释了如何静态创建按钮,就像我第一次提到的那样。
感谢您的帮助!
编辑:我能够根据收到的反馈找出一些东西。
到目前为止,我在 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".
编辑 2:
其实我已经解决了这个问题。谢谢你的建议!我只需要在 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);
有关其他自定义设置,请选中 documentation。
如果您要创建多个按钮,那么我建议设置 id。 This 例子很清楚。
为了使按钮在关闭应用程序后可见,您需要将数据存储在内存中。执行此操作的最简单方法是在关闭应用程序之前维护按钮及其规格的记录并存储它们。打开应用程序后,您可以读取存储的数据并相应地创建按钮。
有关详细信息,请查看 Data Storing。
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 应用程序,它需要允许用户创建和删除按钮。我知道如何通过在 XML 文件中添加按钮并在 JAVA 文件中创建它的功能来静态创建按钮。
相反,我有一个静态按钮,我将其称为 "Create Button"。当用户按下创建按钮时,他们应该可以选择向当前 activity 添加一个新按钮,允许他们更改所述按钮的标题等。当他们关闭应用程序并重新打开它时;他们添加的按钮应该仍然存在。同样,应该为他们提供删除按钮的选项。
有人能指出我正确的方向吗?我遇到的大多数资源仅解释了如何静态创建按钮,就像我第一次提到的那样。
感谢您的帮助!
编辑:我能够根据收到的反馈找出一些东西。
到目前为止,我在 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".
编辑 2:
其实我已经解决了这个问题。谢谢你的建议!我只需要在 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);
有关其他自定义设置,请选中 documentation。
如果您要创建多个按钮,那么我建议设置 id。 This 例子很清楚。
为了使按钮在关闭应用程序后可见,您需要将数据存储在内存中。执行此操作的最简单方法是在关闭应用程序之前维护按钮及其规格的记录并存储它们。打开应用程序后,您可以读取存储的数据并相应地创建按钮。
有关详细信息,请查看 Data Storing。
ViewGroup mViewGroup = (ViewGroup) findViewById(R.id.main_layout_id);
mViewGroup.addView(yourButton, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));