Использование "android: textAppearance" в TextView/EditText завершается с ошибкой, но работает "стиль"
Это образец TextView в XML, который правильно применит стиль TextContactContactName
к TextView.
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/photo"
android:layout_alignTop="@id/photo"
android:paddingLeft="10dp"
android:text="First Last"
style="@style/TextContactContactName"
/>
Теперь у меня есть некоторые другие вещи, которые нужно установить для этого элемента, которые не связаны с текстом. Поэтому я попытался переместить TextContactContactName
и применить его через "android: textAppearance"
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/photo"
android:layout_alignTop="@id/photo"
android:paddingLeft="10dp"
android:text="First Last"
android:[email protected]/TextContactContactName"
/>
К несчастью, форматирование текста не применяется.
Вот как выглядит стиль (хранящийся в res/values/styles-text.xml
):
<style name="TextContactContactName">
<item name="android:textSize">24sp</item>
<item name="android:textColor">#333333</item>
<item name="android:shadowColor">#ffffff</item>
<item name="android:shadowDx">0</item>
<item name="android:shadowDy">1</item>
<item name="android:shadowRadius">1</item>
</style>
Я неправильно использую тег textAppearance
?
Я тестировал на Android 2.2 - HTC Desire.
Ответы
Ответ 1
Хорошо, похоже на мою ошибку. Я сделал быстрый тест:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text styled using 'style'."
style="@style/UiTestTextView"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text styled using 'textAppearance'."
android:textAppearance="@style/UiTestTextView"
/>
и styles-text.xml:
<style name="UiTestTextView">
<item name="android:textColor">#ff0000</item>
<item name="android:textSize">16sp</item>
<item name="android:shadowColor">#ffffff</item>
<item name="android:shadowDx">1</item>
<item name="android:shadowDy">2</item>
<item name="android:shadowRadius">3</item>
</style>
Важно помнить, что элементы shadow*
не являются текстовыми свойствами. И как таковой не будет применяться через textAppearance.
Я собираюсь спросить в списке рассылки разработчиков Android, если это желаемое поведение.
Ответ 2
Я опубликовал отчет об ошибке по этой проблеме. Я думаю, что получил стандартный ответ: "тень не считается частью внешнего вида текста".
http://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=35887