如何在Android中dynamic添加button?

如何在Android中dynamic添加button?

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

看看这个例子

尝试这个:

 for (int i = 1; i <= 20; i++) { LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); Button btn = new Button(this); btn.setId(i); final int id_ = btn.getId(); btn.setText("button " + id_); btn.setBackgroundColor(Color.rgb(70, 80, 90)); linear.addView(btn, params); btn1 = ((Button) findViewById(id_)); btn1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Toast.makeText(view.getContext(), "Button clicked index = " + id_, Toast.LENGTH_SHORT) .show(); } }); } 

尝试这个:

 LinearLayout ll = (LinearLayout)findViewById(R.id.layout); Button btn = new Button(this); btn.setText("Manual Add"); btn.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); ll.addView(btn); 
 for (int k = 1; k < 100; k++) { TableRow row = new TableRow(this); innerloop: for (int l = 1; l < 4; l++) { btn = new Button(this); TableRow.LayoutParams tr = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); layout.setWeightSum(12.0f); tr.weight = 0; btn.setLayoutParams(tr); btn.setTextColor(a); btn.setHeight(150); btn.setWidth(150); btn.setId(idb); btn.setText("Button " + idb); row.addView(btn); } } 

试试这个代码

  Button btn=new Button(this); btn.setId(btn); btn.setBackgroundResource(R.drawable.image); btn.setMinimumHeight(150); btn.setMinimumWidth(150); Relativelayout.addView(btn); 

尝试这个

 private void createLayoutDynamically(int n) { for (int i = 0; i < n; i++) { Button myButton = new Button(this); myButton.setText("Button :"+i); myButton.setId(i); final int id_ = myButton.getId(); LinearLayout layout = (LinearLayout) findViewById(R.id.myDynamicLayout); layout.addView(myButton); myButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Toast.makeText(DynamicLayout.this, "Button clicked index = " + id_, Toast.LENGTH_SHORT) .show(); } }); } 

试试这个代码。 它会正常工作..

 public class DynamicViewsActivity extends Activity { Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_dynamic_views); ScrollView scrl=new ScrollView(this); final LinearLayout ll=new LinearLayout(this); ll.setOrientation(LinearLayout.HORIZONTAL); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); layoutParams.setMargins(100, 500, 100, 200); scrl.addView(ll); Button add_btn=new Button(this); add_btn.setText("Click Here"); ll.addView(add_btn, layoutParams); final Context context = this; add_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(context, App2Activity.class); startActivity(intent); } }); this.setContentView(scrl); } } 

检查一下。

 LinearLayout ll_Main = new LinearLayout(getActivity()); LinearLayout ll_Row01 = new LinearLayout(getActivity()); LinearLayout ll_Row02 = new LinearLayout(getActivity()); ll_Main.setOrientation(LinearLayout.VERTICAL); ll_Row01.setOrientation(LinearLayout.HORIZONTAL); ll_Row02.setOrientation(LinearLayout.HORIZONTAL); final Button button01 = new Button(getActivity()); final Button button02 = new Button(getActivity()); final Button button03 = new Button(getActivity()); final Button button04 = new Button(getActivity()); ll_Row01.addView(button01); ll_Row01.addView(button02); ll_Row02.addView(button03); ll_Row02.addView(button04); ll_Main.addView(ll_Row01); ll_Main.addView(ll_Row02); button04.setVisibility(View.INVISIBLE); button04.setVisibility(View.VISIBLE); 

我用这个(或者非常相似的)代码来添加几个TextView到一个LinearLayout:

 // Quick & dirty pre-made list of text labels... String names[] = {"alpha", "beta", "gamma", "delta", "epsilon"}; int namesLength = 5; // Create a LayoutParams... LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.FILL_PARENT); // Get existing UI containers... LinearLayout nameButtons = (LinearLayout) view.findViewById(R.id.name_buttons); TextView label = (TextView) view.findViewById(R.id.master_label); TextView tv; for (int i = 0; i < namesLength; i++) { // Grab the name for this "button" final String name = names[i]; tv = new TextView(context); tv.setText(name); // TextViews CAN have OnClickListeners tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { label.setText("Clicked button for " + name); } }); nameButtons.addView(tv, params); } 

这个和dicklaw795的代码之间的主要区别是它没有为每个TextView设置()和重新获得()ID – 我发现它是不必要的,虽然我可能需要它来稍后识别公共处理程序中的每个button例如每个TextView通过onClick()调用)。

尝试下面的代码。

 LinearLayout layout = (LinearLayout) findViewById(R.id.llayout); layout.setOrientation(LinearLayout.VERTICAL); Button btn = new Button(this); btn.setText("Button1"); layout.add(btn); btn = new Button(this); btn.setText(Button2); layout.add(btn); 

像这样你可以按照你的要求添加button。

其实我添加到XML布局文件可以使用任何东西! 然后从特定活动的源代码中,我通过它的id获取对象,并使用可见性方法“玩”。

这里是一个例子:

((Spinner)findViewById(R.id.email_spinner)).setVisibility(View.GONE);

 Button myButton = new Button(this); myButton.setId(123); 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); myButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Toast.makeText(DynamicLayout.this, "Button clicked index = " + id_, Toast.LENGTH_SHORT) .show(); } }); 

如果你想dynamic添加button,试试这个:

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); for (int i = 1; i <= 5; i++) { LinearLayout layout = (LinearLayout) findViewById(R.id.myLinearLayout); layout.setOrientation(LinearLayout.VERTICAL); Button btn = new Button(this); btn.setText(" "); layout.addView(btn); } } 
 public void add_btn() { lin_btn.setWeightSum(3f); for (int j = 0; j < 3; j++) { LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params1.setMargins(10, 0, 0, 10); params1.weight = 1.0f; LinearLayout ll; ll = new LinearLayout(this); ll.setGravity(Gravity.CENTER_VERTICAL); ll.setOrientation(LinearLayout.HORIZONTAL); ll.setLayoutParams(params1); final Button btn; btn = new Button(DynamicActivity.this); btn.setText("A"+(j+1)); btn.setTextSize(15); btn.setId(j); btn.setPadding(10, 8, 10, 10); ll.addView(btn); lin_btn.addView(ll); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(v.getId()==0) { txt_text.setText("Hii"); }else if(v.getId()==1) { txt_text.setText("hello"); }else if(v.getId()==2) { txt_text.setText("how ru"); } } }); } } 

mainactivity.xml写:

 <Button android:id="@+id/search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Search" android:visibility="invisible"/> 

main.java写:

 Button buttonSearch; buttonSearch = (Button)findViewById(R.id.search); buttonSearch.setVisibility(View.VISIBLE);