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

#java #android #xml #widget

Вопрос:

Я хочу динамически добавить виджет кнопки в линейный макет, но, похоже, это не работает. В моем sum_example.xml файл Я уже добавил три виджета в линейный макет, который является корневым макетом.

     //Finding the layout
        LinearLayout linear = (LinearLayout) findViewById(R.id.sum_example_root);
        //Creating a widget
        Button button = new Button(this);
        //Setting the required parameters of widget
        button.setLayoutParams(new LinearLayout.LayoutParams
                (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
        //Setting optional parameters of widget
        button.setId(R.id.added_btn_1);
        button.setText("I am added");
        button.setTextColor(0x000000);
        button.setBackgroundColor(0x00ff00);
        button.setOnClickListener(this::sum);
        //Adding the widget to the layout
        linear.addView(button);
 

Комментарии:

1. что вы подразумеваете под «похоже, не работает». Что происходит, когда ты пытаешься? Что содержит ваш xml-файл?

Ответ №1:

Вы на правильном пути, но проблема в ваших цветовых аргументах.

  button.setText("I am added");
 button.setTextColor(Color.BLACK);
 button.setBackgroundColor(Color.MAGENTA);
 

Попробуйте вместо этого использовать константы цветового класса, как я сделал выше.

 //You don't need this
button.setId(R.id.added_btn_1);
 

Также не добавляйте установить идентификатор на кнопку, так как вы не добавляете его в иерархию представления. Идентификатора имени должно быть достаточно