Проблема:
У меня есть несколько TextViews, которые имеют большое количество идентичных атрибутов. Я хотел бы применить следующий стиль ко всем TextViews.
<!-- TextView -->
<style name="fieldLabel" parent="@android:style/Widget.TextView">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">0.7</item>
<item name="android:textSize">18sp</item>
</style>
Но по какой-то причине, когда я применяю этот стиль в качестве темы для всей деятельности, я получаю эту ошибку:
09-08 15:57:17.034: ERROR/AndroidRuntime(5269): Caused by: java.lang.RuntimeException: Binary XML file line #38: You must supply a layout_width attribute.
Это только происходит, когда я пытаюсь применить этот стиль в качестве темы. Потому что, когда я добавляю
style="@style/fieldLabel"
индивидуально для каждого атрибута TextView, он работает должным образом, поэтому возникает ошибка при попытке применить эту тему ко всему действию .
Код:
styles.xml:
<style name="CustomActivityStyle" parent="android:Theme"> <!--This is theme I am trying to apply -->
<item name="android:textViewStyle">@style/fieldLabel</item>
</style>
<!-- TextView -->
<style name="fieldLabel" parent="@android:style/Widget.TextView">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">0.7</item>
<item name="android:textSize">18sp</item>
</style>
myactivity.xml:
<!-- This is an example of one of the TextViews -->
<TextView
android:id="@+id/name_label"
android:text="@string/name_label"
/>
AndroidManifest.xml:
<!-- Implementing the theme in the Manifest -->
<activity android:name=".MyActivity"
android:configChanges="orientation"
android:theme="@style/CustomActivityStyle"
android:label="@string/my_title">
</activity>
Есть еще одна тема по этому вопросу здесь , но я решил задать новый вопрос вместо того, чтобы восстанавливать старый.
Подведем итог:
Я знаю, что я мог бы легко сделать эту работу, просто добавив атрибуты layout_width и layout_height, или , явно добавив style = "@ style / fieldLabel" к каждому TextView. Но суть этого вопроса заключается в том, чтобы улучшить мои (и, надеюсь, другие) соглашения о кодировании, а также сделать сам код более читабельным и многократно используемым.
Я на самом деле очень удивлен, что никто раньше не сталкивался с этой проблемой, и что это не более стандартный способ форматирования.
Спасибо за любую помощь.