У меня была простая кнопка с фоновым изображением, определенным как
android:background="?attr/button"
где ?attr/button
было ссылкой на простой 9-патчовый png. Все работало нормально, текст в кнопке был выровнен правильно.
Тогда мне нужно было иметь другой фон для нажатого состояния кнопки. Поэтому я изменил это на
android:background="@drawable/state_button"
где @drawable/state_button
- это xml со следующими состояниями
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_pressed" /> <!-- focused -->
<item android:drawable="@drawable/button" /> <!-- default -->
</selector>
И после этого я не могу правильно выровнять текст. Если я поставлю android:gravity="center_vertical"
, текст будет нарисован примерно на 1/4 высоты кнопки сверху.
Я дважды проверил свои 9-патч-образы, с ними все в порядке. И я также попытался использовать обычные png для фона, это тоже ничего не меняет.