Why shouldn't I set layout_width and layout_height in a style?

Axarydax picture Axarydax · May 11, 2013 · Viewed 17.4k times · Source

If I have a lot of TextViews serving as item labels, I thought I could extract everything that's common about them into a style, and in the layout use only

<TextView style="@style/label" android:text="Foo"/>
<TextView style="@style/label" android:text="Bar"/>

with style like:

<style name="label">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
</style>

But when I do this, it works fine on emulator and device, but the Android XML editor complains that "<TextView>" does not set the required layout_height attribute. Is there some reason on why it is reporting this warning?

Answer

Yoann Hercouet picture Yoann Hercouet · May 11, 2013

Have you tried to clean the project?

I am using also the same thing on some XML files for the width and the length. Here is an example working on my app, you can have a look:

<TextView
    android:id="@+id/viewdescription"
    android:textIsSelectable="true"
    android:layout_below="@+id/rating_bar_view"
    android:minLines="8"
    style="@style/description" />

And the XML:

<style name="description">
   <item name="android:layout_gravity">center_horizontal</item>
   <item name="android:inputType">textMultiLine</item>
   <item name="android:layout_width">fill_parent</item>
   <item name="android:layout_height">wrap_content</item>     
   <item name="android:textSize">14sp</item>
   <item name="android:textColor">@color/Black</item>
   <item name="android:layout_marginRight">8dp</item>
   <item name="android:layout_marginLeft">8dp</item>