it-swarm.com.de

So erstellen Sie ein Layout mit 6 Schaltflächen wie Fensterfliesen

Ich versuche, ein Layout mit 6 Schaltflächen zu erstellen, das sich automatisch an die Bildschirmgröße als Kacheln von Windows Phone anpasst. Im Code erstelle ich dynamisch die 6-Schaltfläche, 2 für Linie, aber die Schaltfläche sollte der Größe des Bildschirms entsprechen, der die letztere ausfüllt. wie kann ich vorgehen

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >

<LinearLayout
    Android:layout_width="match_parent"
        Android:layout_height="0dip"
    Android:orientation="horizontal"
    Android:weightSum="2" >

    <Button
        Android:layout_width="0dip"
                Android:layout_height="match_parent"
        Android:layout_weight="1"
        Android:background="@drawable/conv_up" />

    <Button
        Android:layout_width="0dip"
                Android:layout_height="match_parent"
        Android:layout_weight="1"
        Android:background="@drawable/conv_up"
         />

</LinearLayout>

<LinearLayout
    Android:layout_width="match_parent"
        Android:layout_height="0dip"
    Android:orientation="horizontal"
    Android:weightSum="2" >

    <Button
        Android:layout_width="0dip"
                Android:layout_height="match_parent"
        Android:layout_weight="1"
        Android:background="@drawable/conv_up"
        />

    <Button
        Android:layout_width="0dip"
                Android:layout_height="match_parent"
        Android:layout_weight="1"
        Android:background="@drawable/conv_up"
         />

</LinearLayout>

<LinearLayout
    Android:layout_width="match_parent"
        Android:layout_height="0dip"
    Android:orientation="horizontal"
    Android:weightSum="2" >

    <Button
        Android:layout_width="0dip"
                Android:layout_height="match_parent"
        Android:layout_weight="1"
        Android:background="@drawable/conv_up"
         />

    <Button
        Android:layout_width="0dip"
                Android:layout_height="match_parent"
        Android:layout_weight="1"
        Android:background="@drawable/conv_up"
        />

</LinearLayout>
11
bisemanu

Ich würde eine vertikale LinearLayout mit drei Zeilen mit dem gleichen Gewicht wie Kinder verwenden, wobei jede Zeile eine horizontale LinearLayout mit zwei Kindern mit dem gleichen Gewicht ist, wodurch sichergestellt wird, dass der gesamte Bereich ausgefüllt wird. Für sechs Tasten sollte Leistung kein Problem sein.

Wenn die Leistung von Bedeutung ist, können Sie die Zeilen als RelativeLayouts definieren und eine Strebe verwenden, um sie in zwei Hälften zu teilen und die beiden untergeordneten Elemente darauf basierend zu positionieren.

Wenn ich ein Federbein sage, meine ich Folgendes:

<View Android:id="@+id/strut"
    Android:layout_width="0dp"
    Android:layout_height="0dp" 
    Android:layout_centerHorizontal="true"/>

Update: Da Sie die LinearLayouts versuchen, ist hier, wie Sie mit den Höhen und Breiten umgehen können:

Der übergeordnete LinearLayout kann Folgendes haben:

Android:layout_width="match_parent"
Android:layout_height="match_parent"

Die drei LinearLayout Kinder haben:

Android:layout_width="match_parent"
Android:layout_height="0dip"

Die Buttons wird haben:

Android:layout_width="0dip"
Android:layout_height="match_parent"

Wie Sie sehen, haben wir 0dip für die Eigenschaft, auf die die Gewichtung angewendet wird (entweder für die Höhe, wenn das übergeordnete Element vertikal ausgerichtet ist, oder für die Breite, wenn das übergeordnete Element horizontal ausgerichtet ist), die vergrößert werden muss, um den Raum auszufüllen.

Hier ist die vollständige XML-Datei (die Schaltflächen enthalten keine Zeichen, Sie können also Ihre hinzufügen):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical" >

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="0dip"
        Android:orientation="horizontal"
        Android:layout_weight="1" >

        <Button
            Android:layout_width="0dip"
            Android:layout_height="match_parent"
            Android:layout_weight="1" />

        <Button
            Android:layout_width="0dip"
            Android:layout_height="match_parent"
            Android:layout_weight="1"/>
    </LinearLayout>

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="0dip"
        Android:orientation="horizontal"
        Android:layout_weight="1" >

        <Button
            Android:layout_width="0dip"
            Android:layout_height="match_parent"
            Android:layout_weight="1" />

        <Button
            Android:layout_width="0dip"
            Android:layout_height="match_parent"
            Android:layout_weight="1"/>
    </LinearLayout>

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="0dip"
        Android:orientation="horizontal"
        Android:layout_weight="1" >

        <Button
            Android:layout_width="0dip"
            Android:layout_height="match_parent"
            Android:layout_weight="1" />

        <Button
            Android:layout_width="0dip"
            Android:layout_height="match_parent"
            Android:layout_weight="1" />
    </LinearLayout>
</LinearLayout>

Und das Ergebnis: enter image description here

17
Voicu

Ich denke, Sie sollten einen Blick auf GridView werfen

5
Hein

Verwenden Sie GridLayout! Dies ist perfekt für diese Situation

<GridLayout
    Android:layout_width="match_parent"
    Android:layout_height="350dp"
    Android:layout_margin="0.5dp"
    Android:columnCount="2"
    Android:rowCount="3" >

    <Button
        Android:id="@+id/b_1"
         />

    <Button
        Android:id="@+id/b_2"
         />

    <Button
        Android:id="@+id/b_3"
         />

    <Button
        Android:id="@+id/b_4"
         />

    <Button
        Android:id="@+id/b_5"
         />

    <Button
        Android:id="@+id/b_6"
        />
</GridLayout>
1
user2983212

Ich verwende die Android .v7 Bibliotheken. In dieser XML-Datei wurde das Layout mit 2 Spalten und 3 Zeilen erstellt, das den gesamten Bildschirm ausfüllt:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.GridLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/lib/Android.support.v7.widget.GridLayout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    xmlns:grid="http://schemas.Android.com/apk/res-auto"
    Android:layout_margin="0.5dp"
    app:columnCount="2"
    app:rowCount="3"
    app:useDefaultMargins="true">

    <Button
        Android:id="@+id/b_1"
        grid:layout_columnWeight="1"
        grid:layout_rowWeight="1"
        grid:layout_row="0"
        grid:layout_column="0"
        Android:text="Hellooo"/>

    <Button
        Android:id="@+id/b_2"
        grid:layout_columnWeight="1"
        grid:layout_rowWeight="1"
        grid:layout_row="0"
        grid:layout_column="1"
        Android:text="Hellooo"/>

    <Button
        Android:id="@+id/b_3"
        grid:layout_columnWeight="1"
        grid:layout_rowWeight="1"
        grid:layout_row="1"
        grid:layout_column="0"
        Android:text="Hellooo"/>

    <Button
        Android:id="@+id/b_4"
        grid:layout_columnWeight="1"
        grid:layout_rowWeight="1"
        grid:layout_row="1"
        grid:layout_column="1"
        Android:text="Hellooo"/>

    <Button
        Android:id="@+id/b_5"
        grid:layout_columnWeight="1"
        grid:layout_rowWeight="1"
        grid:layout_row="2"
        grid:layout_column="0"
        Android:text="Hellooo"/>

    <Button
        Android:id="@+id/b_6"
        grid:layout_columnWeight="1"
        grid:layout_rowWeight="1"
        grid:layout_row="2"
        grid:layout_column="1"
        Android:text="Hellooo"/>

</Android.support.v7.widget.GridLayout>
0
Gene Bo