How to add a button dynamically in Android?

后端 未结 17 1309
礼貌的吻别
礼貌的吻别 2020-11-22 13:17

How to add a button dynamically in Android?

17条回答
  •  借酒劲吻你
    2020-11-22 13:35

    You could create a base layout for your button and dynamically change only what is specific, like this project I made to run different exercises from a Material Design course I'm taking:

    In this example, I use a preconfigured AppCompatButton:

    layout_base_button.xml

    
    
    
    
    
    
    

    And in the MainActivity I created some instances and changed what I need, like the button text and onClick event:

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

    Sorry for being late...

提交回复
热议问题