Во время выполнения вы знаете, какой стиль вы хотите, чтобы ваша кнопка имела. Поэтому заранее, в xml в папке макета, вы можете иметь все готовые кнопки с нужными вам стилями. Поэтому в папке макета у вас может быть файл с именем: button_style_1.xml. Содержимое этого файла может выглядеть следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<Button
android:id="@+id/styleOneButton"
style="@style/FirstStyle" />
Если вы работаете с фрагментами, то в onCreateView вы надуете эту кнопку, например:
Button firstStyleBtn = (Button) inflater.inflate(R.layout.button_style_1, container, false);
где контейнер - это контейнер ViewGroup, связанный с методом onCreateView, который вы переопределяете при создании фрагмента.
Нужны еще две такие кнопки? Вы создаете их так:
Button secondFirstStyleBtn = (Button) inflater.inflate(R.layout.button_style_1, container, false);
Button thirdFirstStyleBtn = (Button) inflater.inflate(R.layout.button_style_1, container, false);
Вы можете настроить эти кнопки:
secondFirstStyleBtn.setText("My Second");
thirdFirstStyleBtn.setText("My Third");
Затем вы добавляете свои настраиваемые стилизованные кнопки в контейнер макета, который вы также надули в методе onCreateView:
_stylizedButtonsContainer = (LinearLayout) rootView.findViewById(R.id.stylizedButtonsContainer);
_stylizedButtonsContainer.addView(firstStyleBtn);
_stylizedButtonsContainer.addView(secondFirstStyleBtn);
_stylizedButtonsContainer.addView(thirdFirstStyleBtn);
И вот как вы можете динамически работать со стилизованными кнопками.