Кнопка Android textAppearance
Я могу изменить внешний вид текста кнопки, установив его прямо в объекте, как это:
<Button
        android:id="@+id/login_btn_bypass"
        android:textSize="15dp"
        android:textColor="#878787"
        android:textStyle="bold" />
но не при использовании textAppearance в style
// in layout xml
<Button
    android:id="@+id/login_btn_login"
    android:textAppearance="@style/login_button_text_appearance" />
// in style definition 
<style name="login_button_text_appearance">
    <item name="android:textSize">15dp</item>
    <item name="android:textColor">#a7a7a7</item>
    <item name="android:textStyle">bold</item>
</style>
кто-нибудь знает почему?
2 ответов
Я думаю, вы должны использовать :
style = "@style/login_button_text_appearance" 
вместо
android:textAppearance="@style/login_button_text_appearance"
на android:textAppearance - это просто атрибут, как и любой другой атрибут ( android:textSize,android:textStyle...etc), и значение стиля неприемлемо в качестве значения для этого атрибута
EDIT:
<Button
    android:id="@+id/login_btn_login"
    style="@style/login_button_text_appearance" />
значения атрибутов, определенные с помощью textAppearance, применяются перед значениями атрибутов в стиле. А Button Это TextView с примененным стилем, и стиль по умолчанию кнопки переопределит ваш textAppearance (Android 2.3, например, установит его ?android: attr / textAppearanceSmallInverse) и textColor.
textAppearance исключает стили в качестве значений,android:textAppearance="@style/login_button_text_appearance" обычно правильный способ установить textAppearance, но не для Button:
если вы меняете цвет текста Button, вы также должны применить пользовательское фоновое изображение, потому что если вы этого не сделаете, одно устройство будет использовать темное фоновое изображение (motorola defy), а другое-светлое изображение (htc desire), которое может затруднить чтение текста.
