it-swarm.com.de

Warum sollte ich nicht layout_width und layout_height in einem Stil festlegen?

Wenn ich viele TextViews als Elementbezeichnungen habe, dachte ich, ich könnte alles, was an ihnen häufig ist, in einen Stil extrahieren und nur im Layout verwenden

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

mit Stil wie:

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

Aber wenn ich das mache, funktioniert es gut auf Emulator und Gerät, aber der Android XML-Editor beklagt, dass "<TextView>" does not set the required layout_height attribute. Gibt es einen Grund, warum es diese Warnung meldet?

27
Axarydax

Haben Sie versucht, das Projekt zu reinigen?

Ich verwende dasselbe für einige XML-Dateien für die Breite und Länge. Hier ist ein Beispiel, das an meiner App arbeitet, Sie können einen Blick darauf werfen:

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

Und das 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>

10
Yoann Hercouet

Nach einemBuild > Clean Project- Versuch hatte ich immer noch das gleiche Problem im Layout-Editor. Ein vollständiger Neustart meines IDE löste das Problem für mich.

3
jterry

Ich habe es versucht, es funktioniert einfach gut ..

 <EditText
        Android:id="@+id/edt_mobile_no"
        style="@style/login_input_fields"
        Android:hint="@string/hint_mobile"
        Android:inputType="phone" />

Hier unten der Stil für den EditText

<style name="login_input_fields">
    <item name="Android:layout_width">match_parent</item>
    <item name="Android:layout_height">40dp</item>
    <item name="Android:layout_marginBottom">10dp</item>
    <item name="Android:background">@drawable/bg_curved_white_border</item>
    <item name="Android:paddingRight">10dp</item>
    <item name="Android:paddingLeft">10dp</item>
    <item name="Android:textColor">@Android:color/white</item>
    <item name="Android:textColorHint">@color/underline</item>
    <item name="Android:textSize">16sp</item>
    <item name="Android:typeface">monospace</item>
</style>
1
Raja Jawahar

Altes Thema aber noch :)

Ich denke nicht, dass es eine gute Idee ist, Breite und Höhe für den Stil festzulegen. Grundsätzlich kompiliert und funktioniert es in der Regel, aber ich habe Situationen mit komplexeren Layouts, Include-Elementen usw. erlebt, in denen es Probleme verursachte. Und wenn Sie darüber nachdenken, macht es keinen Sinn, es dort zu platzieren.

Sie können @dimen leicht verwenden, wenn Sie unterschiedliche Werte für verschiedene Layouts wünschen. Und es kann auch für andere, die Ihren Stil verwenden, ziemlich überraschend sein. Normalerweise möchten Sie Farbe, Größe und Verhalten mit dem Stil festlegen, aber die Größe gehört nicht dazu.

Sie wissen nie, in welchem ​​Kontext Ihr Stil verwendet wird. Es ist nur eine dieser stinkenden Dinge, die, wenn Sie sehen, Sie das Gefühl haben, dass etwas besser gemacht werden könnte.

0
bio007