Android Eclipse - 单击时创建另一个按钮的按钮
Posted
技术标签:
【中文标题】Android Eclipse - 单击时创建另一个按钮的按钮【英文标题】:Android Eclipse - Button that creates another button on click 【发布时间】:2013-12-18 20:41:10 【问题描述】:我正在尝试创建一个 android 应用,用户可以在其中划分他们在大学每一年学习的课程。这个想法是有一个带有“添加年份”按钮的打开屏幕,当它被点击时,它会在它的上方或下方创建一个按钮(并不重要),他们可以为其创建自定义名称。 “添加年份”按钮必须保留,以便他们可以根据需要添加尽可能多的年份/学期/w/e。 我一直在关注本教程:http://developer.android.com/training/basics/firstapp/starting-activity.html 忽略有关添加文本字段的部分。当它得到关于让你的按钮做某事的部分时,本教程将获取用户输入的文本并将其显示在一个新的 xml 中。
我在 java 方面的经验很少,每当遇到困难时都会求助于谷歌,但我没有找到任何可以帮助我解决困境的东西。 这是我的 activity_main.xml 文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:background="@drawable/main_background"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button_add_year"
android:layout_
android:layout_
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="39dp"
android:text="@string/button_add_year"
android:onClick="addYear" />
</RelativeLayout>
还有我的 .java
package com.bkarpinski.macgpatrack;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.*;
public class MainActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
public boolean onCreateOptionsMenu(Menu menu)
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
/** Called when the user clicks the addYear button */
public void addYear(View view)
Intent intent = new Intent(this, CreateNewYearButton.class);
请帮帮我!我必须在这个星期三展示,我被困住了!! D:
【问题讨论】:
到底是什么问题?什么是/不工作? 它现在可以工作,但我不知道如何让按钮在同一屏幕上创建另一个按钮。它调用 CreateNewYear.class,但该类是空的,因为我不知道从那里开始 【参考方案1】:最简单的方法是隐藏第二个按钮,然后单击第一个按钮使第二个按钮可见首先使第二个按钮不可见
<Button
android:id="@+id/button2"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="2ndButton"
android:visibility="invisible" />
然后使用 OnClickListener
方法与此
addYearButton = (Button) findViewById(R.id.add);
2ndButton = (Button) findViewById(R.id.button2);
addYearButton.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
//when addYear is clicked show the new button
2ndButton.setVisibility(View.VISIBLE);
);
【讨论】:
我可以使用 if 语句使其添加后续按钮吗?类似 if(2ndbutton.visibility == true) 3rdButton.setVisibility(view.VISIBLE); ?【参考方案2】:要添加新的Button
,您可以使用类似的方式以编程方式创建它
addYearButton = (Button) findViewById(R.id.add);
addYearButton.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
//when addYear is clicked show the new button
Button b = new Button(v.getContext()); // create Button
b.setText("Some text on Button"); // Set the text of the Button
// set params and add button to layout
);
第二个答案in this question 显示如何添加Button
并将params
添加到其中,例如height
和width
。另见the LayoutParam Docs。
如果您需要不确定数量的Button
s,具体取决于单击Button
的次数,那么您可能会想要使用它。如果您有几个可以添加的Button
s,那么更改Visibility
将起作用。
编辑
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addYearButton = (Button) findViewById(R.id.add);
你应该在这里初始化你的第一个Button
,并在onCreate()
之前用Button addYearButton;
声明它。此外,您需要在activity_main.xml
中使用Button
和id
的add
。
【讨论】:
这与 2 小时前给出的答案相同。 @user2511882 不,不是。我正在展示如何以编程方式(而不是通过 xml)添加Button
,这是一种完全不同的方法,而不是仅仅更改预构建的 Button
s 的 Visibility
。
我是把它放在我的java还是主xml中?因为当我把它放在 java 中时,它给了我一条错误消息,在第一个 addYearButton 下划线
此代码将在您的 Java 代码中,但您仍需要 xml 中的 add
按钮
R.id.add 给我带来了问题以上是关于Android Eclipse - 单击时创建另一个按钮的按钮的主要内容,如果未能解决你的问题,请参考以下文章
Android SDK中的Eclipse Marketplace在哪里