Versucht mit Android zu bekommen LinearLayout zu Strecken horizontal und vertikal
UPDATE: ich Schätze die Beratung zu verwenden, GridView, und ich glaube, dass würde eine bessere Leistung. Aber meine anfängliche Bemühungen bei der Umsetzung ein einfaches GridView haben dazu geführt, schändlichen Misserfolg. Ich nehme an, herauszufinden, was ich falsch mache, ist für ein anderes Thema. Um dies zu beheben Umsetzung, die ich verwendet, OnWindowFocusChanged zu finden ANDROID_CONTENT Höhe, dividiert durch die Anzahl der Zeilen, die Zeilenhöhe festlegen. Die wichtige Lektion hier, die nicht vorhanden ist in vielen Diskussionen zu diesem Thema wird OnCreate ist der FALSCHE Ort, um Dimensionen. OnWindowFocusChanged tritt später, wenn genaue Messungen gemacht werden können. Diese Informationen werden nicht oft erwähnt in den vielen, vielen Diskussionen zu diesem Thema.
ORIGINAL:
Ich arbeite auf einem Android-layout, die versuchen, ein board mit drei Spalten und vier Zeilen.
Will ich dehnen das board zu füllen den Bildschirm sowohl vertikal als auch horizontal. Ich habe versucht, Schachteln LinearLayout, die durch Zeile und Spalte mit der weight="1"
option, aber nur für die Strecken horizontal.
In der folgenden Konfiguration die Zeilen dehnen und füllen Sie die Breite des Bildschirms, aber die Spalten sind "60dp". Ich habe versucht, GridLayout und TableLayout auch, aber nicht in der Lage, das gewünschte Ergebnis zu erhalten.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft = "10dp"
android:paddingRight = "10dp"
android:background="@drawable/bg" >
<LinearLayout
android:id="@+id/player1"
android:layout_width="match_parent"
android:layout_height="@dimen/positionHeight"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:background="@drawable/square" />
<LinearLayout
android:id="@+id/player2"
android:layout_width="match_parent"
android:layout_height="@dimen/positionHeight"
android:layout_alignParentTop="true"
android:orientation="horizontal"
android:background="@drawable/square" />
<LinearLayout
android:id="@+id/row0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/player2"
android:layout_alignParentLeft="true"
android:baselineAligned="false"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/position0"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
<LinearLayout
android:id="@+id/position1"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
<LinearLayout
android:id="@+id/position2"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
</LinearLayout>
<LinearLayout
android:id="@+id/row1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/row0"
android:layout_alignParentLeft="true"
android:baselineAligned="false"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/position3"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
<LinearLayout
android:id="@+id/position4"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
<LinearLayout
android:id="@+id/position5"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
</LinearLayout>
<LinearLayout
android:id="@+id/row2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/row1"
android:layout_alignParentLeft="true"
android:baselineAligned="false"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/position6"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
<LinearLayout
android:id="@+id/position7"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
<LinearLayout
android:id="@+id/position8"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
</LinearLayout>
<LinearLayout
android:id="@+id/row3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/row2"
android:layout_alignParentLeft="true"
android:baselineAligned="false"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/position9"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
<LinearLayout
android:id="@+id/position10"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
<LinearLayout
android:id="@+id/position11"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="@dimen/positionHeight"
android:orientation="horizontal"
android:background="@drawable/square" />
</LinearLayout>
geben Sie mir bitte Vorschlag.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht einverstanden mit anderen, die sagen, dass Sie muss Verwendung eines GridLayout. Versuchen Sie, diesen Ansatz mit einem LinearLayout. Ich verwendet eine generische Ansicht, die für jede Zelle des Gitters, aber keine Kontrolle funktioniert.
Dieser Ansatz erfordert auch keine manuelle manipulation des Layouts im code, ist alles verarbeitet wird, in der xml, mit gewichten.
müssen Sie dies versuchen.
Im Allgemeinen ist es nicht eine gute Idee, um so viele Layouts. Sollten Sie verwenden
TableLayout
oderGridLayout
statt.GridLayout:
TableLayout:
Wie ich bereits in meinem UPDATE vor, der eigentliche trick hier ist die Einstellung irgendwo in anderen Dimensionen als OnCreate. Ich initialisiert, Spieler1, Spieler2, und die position[] als die LinearLayout-Elemente aus der xml, dann in onWindowFocusChanged habe ich eingestellt, Ihre Höhe passen. Nicht so gut wie GridView, wie vorgeschlagen, die von anderen hier, aber das ist etwas, was ich tatsächlich machen die Arbeit!
mit Hilfe von:
http://www.rapidsnail.com/developer/topic/2011/222/27/35613/title-bar-and-get-out-of-the-view-of-the-status-bar-display-area-height.aspx