我有几个共享大量相同属性的TextView。我想将以下样式应用于所有TextView。
<!-- 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>
此问题还有另一个主题here,但我决定提出一个新问题,而不是恢复旧问题。
总结:
我知道通过向每个TextView显式添加style =“@ style / fieldLabel”,只需添加layout_width和layout_height属性或,我就可以轻松完成这项工作。但问题的关键在于改进我的(并希望是其他人)编码约定,以及使代码本身更具可读性和可重用性。
我真的很惊讶以前没有人遇到过这个问题,而且这不是一种标准的格式化方式。
感谢您的帮助。
答案 0 :(得分:-1)
这是问题所在:
引起:java.lang.RuntimeException:二进制XML文件行#20:你 必须提供layout_width属性。
您的TextView ID name_label需要android:layout_height
和android:layout_width
属性。