Android textAllCaps в теме

У меня есть тема, в которой я хотел, чтобы все текстовые представления о действиях были капитализированы. Поэтому я установил textAllCaps в стиле, а затем применил его к textViewStyle в своей теме, как показано ниже

<style name="Widget.Apex.TextView" parent="android:Widget.TextView">
  <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
  <item name="android:textAllCaps">true</item>
</style>

<style name="MyTheme" parent="@android:style/Theme.Holo">
  <item name="android:textViewStyle">@style/Widget.Apex.TextView</item>
</style>

К сожалению, это имело побочный эффект: заголовок моего приложения, субтитры ActionBar и элементы всплывающего меню стали заглавными. Поэтому я решил просто установить атрибуты ActionBarStyle, textAppearanceLargePopupMenu и textAppearanceSmallPopupMenu в моей теме, чтобы они имели собственный стиль с textAllCaps=false. Однако это не работает. Я знаю, что мои темы применяются, потому что если я устанавливаю textColor или textStyle, они оба применяются к заголовкам и элементам меню. Можно ли переопределить textAllCaps в этих стилях?

<style name="Widget.Apex.TextView" parent="android:Widget.TextView">
  <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
  <item name="android:textAllCaps">true</item>
</style>
<style name="TextAppearance.Apex.Widget.ActionBar.Title" parent="android:TextAppearance.Holo.Widget.ActionBar.Title">
  <item name="android:textAllCaps">false</item>
  <item name="android:textStyle">italic</item>
</style>
<style name="TextAppearance.Apex.Widget.ActionBar.Subtitle" parent="android:TextAppearance.Holo.Widget.ActionBar.Subtitle">
  <item name="android:textAllCaps">false</item>
  <item name="android:textStyle">italic</item>
  <item name="android:textColor">#FF0000</item>
</style>
<style name="TextAppearance.Apex.Widget.PopupMenu.Large" parent="android:TextAppearance.Holo.Widget.PopupMenu.Large">
  <item name="android:textAllCaps">false</item>
  <item name="android:textStyle">italic</item>
  <item name="android:textColor">#FF0000</item>
</style>
<style name="TextAppearance.Apex.Widget.PopupMenu.Small" parent="android:TextAppearance.Holo.Widget.PopupMenu.Small">
  <item name="android:textAllCaps">false</item>
  <item name="android:textStyle">italic</item>
  <item name="android:textColor">#FF0000</item>
</style>
<style name="Widget.Apex.ActionBar" parent="android:Widget.Holo.ActionBar">
  <item name="android:titleTextStyle">@style/TextAppearance.Apex.Widget.ActionBar.Title</item>
  <item name="android:subtitleTextStyle">@style/TextAppearance.Apex.Widget.ActionBar.Subtitle</item>
</style>

<style name="MyTheme" parent="@android:style/Theme.Holo">
  <item name="android:actionBarStyle">@style/Widget.Apex.ActionBar</item>
  <item name="android:textAppearanceLargePopupMenu">@style/TextAppearance.Apex.Widget.PopupMenu.Large</item>
  <item name="android:textAppearanceSmallPopupMenu">@style/TextAppearance.Apex.Widget.PopupMenu.Small</item>
  <item name="android:textViewStyle">@style/Widget.Apex.TextView</item>
</style>

Спасибо, Джонатан

10
задан dmck 26 June 2012 в 20:33
поделиться