#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);
Также не добавляйте установить идентификатор на кнопку, так как вы не добавляете его в иерархию представления. Идентификатора имени должно быть достаточно