2012-09-11 10 views
7

Wir schreiben eine App für ICS + und glauben, dass ein GridLayout das beste Layout-Paradigma ist, aber es scheint sehr wenig darüber geschrieben worden zu sein, und wir haben einige Ausrichtungsprobleme.Horizontale Ansichten innerhalb von Android GridLayout

<GridLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/row_background" 
    android:rowCount="1" 
    android:columnCount="3" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:useDefaultMargins="true" 
    android:background="@drawable/list_item_bg"> 

    <ImageView 
     android:id="@+id/visibilityIcon" 
     android:layout_row="0" 
     android:layout_column="0" 
     android:src="@drawable/visibility_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"/> 

    <ImageView 
     android:id="@+id/windIcon" 
     android:layout_row="0" 
     android:layout_column="1" 
     android:src="@drawable/wind_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"/> 

    <ImageView 
     android:id="@+id/crosswindIcon" 
     android:layout_row="0" 
     android:layout_column="2" 
     android:src="@drawable/cloud_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"/> 

</GridLayout> 

jedoch die linken 2 Symbole bleiben linksbündig und die am weitesten rechts stehende Symbol Zentren mit dem verbleibenden Raum.

Im Wesentlichen müssen wir die Größe jeder Spalte auf 1/3 (seit 3 ​​Spalten) der gesamten Bildschirmgröße festlegen. Ich dachte, dies ist, was GridLayout tat, aber es scheint 'wrap_content' verursacht dieses Verhalten (macht Sinn), aber 'match_parent' bewirkt, dass die erste Spalte den gesamten Bildschirm füllt, anstatt seine Zelle zu füllen, was das Verhalten ist, das ich erwartet hätte.

Wir scheinen jede Kombination von Gravitation, Layout_Gravitation usw. ausprobiert zu haben, aber entweder machen wir grundsätzlich etwas falsch oder haben eine Begrenzung des GridLayouts gefunden.

Danke für Ihre Hilfe!

+0

GridLayout scheint nutzlos! –

Antwort

8

In einer GridLayout darf nur eine Zeile und eine Spalte wachsen, und das ist die Gravitation entlang dieser Achse. Wenn mehr als eine Zeile oder Spalte die Gravitation angibt, bekommt nur eine davon (wenn ich mich erinnere, dass es die "letzte" ist). Wählen Sie ein anderes Layout oder schreiben Sie Ihr eigenes Layout. Wenn Sie nur eine Zeile mit gleichmäßig geteilten Symbolen möchten, können Sie ein LinearLayout verwenden, bei dem die Breite der Komponenten 0 Pixel und das Gewicht alle gleich sind, z. 1.

+0

Danke für die Antwort. Aus Neugier, wo hast du diese Einschränkung gefunden? Wir werden mehr untersuchen, aber es scheint wahrscheinlich, dass Sie hier richtig liegen. – RealCasually

+0

Wie bei vielen Sachen mit Android war es Versuch-und-Irrtum und das Lesen der Quelle;) Aber es gibt tatsächlich einen Abschnitt in den Dokumenten Beschränkungen genannt, mit den folgenden Sätzen: "GridLayout bietet keine Unterstützung für das Prinzip des Gewichts, als definiert in Gewicht. Im Allgemeinen ist es daher nicht möglich, ein GridLayout zu konfigurieren, um überschüssigen Platz zwischen mehreren Komponenten zu verteilen. " –

+0

Danke. Ich weiß, dass ich von der ersten Frage hier abweicht - aber ist "Gewicht" in einem LinearLayout das Konzept, nach dem ich wahrscheinlich suche? Mein Ziel ist es, diese Icons gleichmäßig auf dem Bildschirm mit gleichem Abstand zu verteilen. – RealCasually

Verwandte Themen