2017-01-28 2 views
1

Android SDK erfordert layout_width hat Tablelayout Container:Benutzerdefinierte Ansicht ohne in xml

<TableLayout 
    android:id="@+id/tablelayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TableRow> 
     <TextView 
      android:text="Some text" 
      android:padding="3dip" /> 
    </TableRow> 
</TableLayout> 

Tablelayout layout_width und layout_height hat. Fast jede Ansicht muss die Layout_Breite und die Layout_Höhe in XML angeben. Aber das TableRow erfordert es nicht.

Ich werde nicht Layout erstellen (erweitert von FrameLayout) welche Elemente nicht Layout_width und layout_height benötigen (Ich werde die Größe intern mit etwas Magie berechnen).

Wie kann ich die Anforderung layout_width/layout_height aus XML für meine benutzerdefinierte Ansicht entfernen?

Antwort

0

Ich glaube nicht, dass Sie das tatsächlich tun können, aber Sie können versuchen, sie auf Null zu setzen, geben Sie den Layouts eine ID und versuchen Sie, was Sie versuchen, durch Java zu tun ... obwohl ich nicht sicher bin, ob dies funktioniert oder nicht

1

Nach meinem Wissen werden diese Attribute von der Tooling benötigt, und Ausnahmen sind für bestimmte Framework-Widgets wie TableLayout und TableRow in der Toolingtools selbst gemacht. Dies hat möglicherweise damit zu tun, wie diese Widgets LayoutParams für ihre Kinder generieren. normalerweise würde das Fehlen von layout_width oder layout_height zur Laufzeit eine Ausnahme verursachen, aber beide Widgets überschreiben setBaseAttributes() in ihren jeweiligen Klassen LayoutParams, um die Ausnahme nicht auszulösen und stattdessen einen Wert wie MATCH_PARENT festzulegen.

Sie können versuchen, das gleiche zu tun, aber ich erwarte, dass die Build-Tools weiterhin eine Warnung oder einen Fehler erzeugen, wenn Sie diese Attribute in Ihrem XML nicht bereitstellen. Vielleicht gibt es eine Möglichkeit, das zu unterdrücken, aber ich glaube nicht, dass du es nur für die kindlichen Ansichten deiner benutzerdefinierten ViewGroup unterdrücken kannst, also würde ich ehrlich gesagt nicht durch die Schwierigkeiten gehen, wenn ich du wäre.

Nichts besagt, dass Sie die in XML angegebene Breite und Höhe respektieren müssen. Sie können immer noch "magische" Funktionen ausführen. Sie können die Erwartungen jedoch nur dann brechen, wenn Sie Ihre benutzerdefinierte ViewGroup anderen Entwicklern zur Verfügung stellen.

Verwandte Themen