Кнопка 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), которое может затруднить чтение текста.