Как добавить кнопку динамически в Android?

Как добавить кнопку динамически в Android?

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

Я использовал этот (или очень похожий) код, чтобы добавить несколько TextViews в 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 - я нашел его ненужным, хотя мне может понадобиться его позже, чтобы идентифицировать каждую кнопку в обычной процедуре обработчика ( например, вызванный onClick () для каждого TextView).

Попробуйте выполнить следующий код.

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

например, вы добавляете кнопки в соответствии с вашими требованиями.

На самом деле я добавляю в файл макета xml все, что можно использовать! Затем из исходного кода конкретной операции я получаю объект по его идентификатору, а я «играю» с помощью метода видимости.

Вот пример:

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

Если вы хотите добавить динамические кнопки, попробуйте это:

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

Вы можете создать базовый макет для своей кнопки и динамически изменять только то, что конкретно, например, этот проект, который я сделал для выполнения различных упражнений на курсе Material Design, который я беру:

В этом примере я использую предварительно сконфигурированный AppCompatButton:

layout_base_button.xml

    

И в MainActivity я создал несколько экземпляров и изменил то, что мне нужно, например текст кнопки и событие onClick:

     public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LinearLayout baseLayout = findViewById(R.id.base_layout); baseLayout.addView(createButton("TextFields", baseLayout, view -> startActivity(createIntent(TextFieldsActivity.class)) )); baseLayout.addView(createButton("Buttons", baseLayout, view -> startActivity(createIntent(ButtonsActivity.class)) )); baseLayout.addView(createButton("Toolbar", baseLayout, view -> startActivity(createIntent(ToolbarActivity.class)) )); } private View createButton(String text, LinearLayout baseLayout, View.OnClickListener onClickEvent) { View inflated = LayoutInflater.from(this).inflate(R.layout.layout_base_button, baseLayout, false); AppCompatButton btnBase = inflated.findViewById(R.id.btn_base); btnBase.setText(text); btnBase.setOnClickListener(onClickEvent); return btnBase; } private Intent createIntent(Class cls) { return new Intent(this, cls); } } 

Извините за опоздание…

В mainactivity.xml напишите:

  

В main.java пишите:

 Button buttonSearch; buttonSearch = (Button)findViewById(R.id.search); buttonSearch.setVisibility(View.VISIBLE); 
  • Android Google Maps API V2 Увеличить до текущего местоположения
  • Как заставить ndk-gdb работать на Android?
  • Сообщение Android «Обнаружение экрана», если пользователь пытается предоставить разрешение при показе уведомления
  • Можно ли добавить массив или объект в SharedPreferences на Android?
  • Как проверить, может ли какое-либо намерение быть обработано из какой-либо деятельности?
  • О полноэкранном режиме и без заголовка из манифеста
  • Требуется объяснение процедуры запуска Geofence?
  • Как отображать несколько уведомлений в android
  • Android: панель прогресса Semi Circle
  • Автообновление для (частных) приложений для Android
  • загрузить видео в facebook в android
  • Давайте будем гением компьютера.