Текст кнопок больше не выравнивается после изменения BackgroundDrawable

Я изменяю фон своих кнопок.

myButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.card_button_blue));

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

http://upload.dsliga.eu/upload/buttons.jpg

целевая версия SDK - 10. Спасибо.

2 ответа

Решение

Похоже, метод setText() портит выравнивание. После изменения текста, повторного применения гравитации и заполнения сделали свою работу:

myButton.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
myButton.setPadding(12, 12, 12, 12);

Поскольку вы используете 9-патч, вам нужно указать с нижней и правой боковыми линиями, где данные находятся внутри вашего чертежа, вы, вероятно, нарисовали не полную линию внизу, а с правой стороны чертежа 9-патча

вот почему текст внутри вашей кнопки перестал центрироваться, потому что границы 9patch НЕ соответствуют вашим ожиданиям

ваш 9patch должен (как правило), оставить только 1 пиксель вверху и внизу правой боковой линии и 1 пиксель слева и справа от нижней строки

перерисовать 9patch, удалить код гравитации и заполнения, и посмотреть, работает ли он

см. изображение ниже

введите описание изображения здесь

Другие вопросы по тегам