Хлоп. В то время как XML является лучшим практическим ответом, 26 из что-нибудь требует некоторого динамического создания во время выполнения или, по крайней мере, их комбинации. В любом случае вы не увидите большой разницы во времени обработки или размере apk - все сводится к обслуживанию кода.
Например, подумайте, что произойдет, если вы захотите изменить или добавить новый атрибут, скажем, padding, для каждой из ваших буквенных кнопок. Вы хотите вручную изменить все эти XML-элементы или подумать над умным регулярным выражением, чтобы правильно найти / заменить?
Я бы выбрал комбинацию стилей, оператор <include>
и модификацию времени выполнения для комплексного, поддерживаемого решения. Сначала создайте одну кнопку в стиле, который, как вы думаете, вы хотите, чтобы все ваши кнопки выглядели. Извлеките свой стиль LetterButton из style.xml и используйте вместо него атрибут android:style="@style/LetterButton"
. Это позволит вам изменить свой стиль в одном файле и повлиять на все кнопки с буквами.
Затем извлеките саму кнопку в файл <include>
. Вы можете сделать это, щелкнув правой кнопкой мыши версию кнопки с графическим интерфейсом и выбрав «Извлечь включают ...». Затем расположите свои <include>
кнопки так, как вам нужно, возможно, в <TableLayout>
. Убедитесь, что вы даете каждому уникальный идентификатор, например, от @+id/letter_button_0
до _25
. Атрибут text
для всех этих кнопок может быть любым, вы установите их динамически позже.
Наконец, в вашем onCreate определите массив целых чисел в форме {R.id.letter_button_0, ...} и массив строк в форме {"A", ...} и выполните итерацию те, которые делают button = findbyId (int), button.setText (String), чтобы поставить букву на каждой из ваших кнопок.
Может показаться, что в этом случае больше работы, но вы проделываете всю тяжелую работу, создавая интеллектуальный интерфейс, чтобы в дальнейшем вы могли изменить код в одном месте (стиль или включить), и все ваши кнопки будут обновлен.