webentwicklung-frage-antwort-db.com.de

Layout in einer horizontal ausgerichteten Funkgruppe verwalten

Ich verwende ein TableLayout mit TableRows als Hauptaktivität.

Im TableLayout befindet sich eine Optionsfeldgruppe mit 2 Optionsfeldern innerhalb der Aktivität (die Optionsfeldgruppe befindet sich in einer Tabellenzeile). Ich möchte in der Lage sein, das Optionsfeld ganz rechts am rechten Bildschirmrand auszurichten, sodass die "Lücke" zwischen dem linken Optionsfeld und dem rechten Optionsfeld liegt (anstatt nach dem rechten Optionsfeld). d.h.

Also anstatt zu haben
| (x) (x) Lücke |
Ich werde haben
| (x) Lücke (x) |

wo (x) sind die Optionsfelder und | sind die Ränder des Bildschirms

Ich kann die Schwerkraft (center_horizontal) verwenden, um beide Schaltflächen in die Mitte zu bringen (d. H. | Gap (x) (x) gap |), aber ich kann sie scheinbar nicht so aufteilen, wie ich es vorher gesagt habe

17
deteego

Alles was Sie brauchen, um eine beliebige Anzahl von Schaltflächen horizontal über den Bildschirm zu verteilen:

  1. RadioGroup muss Android:orientation="horizontal" & Android:layout_width="fill_parent" haben
  2. Jedes Optionsfeld muss einen Android:layout_weight="1" haben, mit Ausnahme der Schaltfläche ganz rechts (damit es am rechten Bildschirmrand ausgerichtet ist)!

Landscape screenshot

Ich habe Stunden gebraucht, um das herauszufinden.

Hier ist ein Beispielcode mit einem Bonus von zwei Textbeschriftungen und dem rechten und linken Bildschirmrand für eine Umfrage-App.

<RadioGroup
    Android:id="@+id/radio_group"
    Android:orientation="horizontal"
    Android:layout_below="@id/question" 
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:visibility="gone"
>
    <RadioButton
        Android:id="@+id/strong_disagree_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="1"
    />
    <RadioButton
        Android:id="@+id/disagree_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="@string/disagree"
    />
    <RadioButton
        Android:id="@+id/neutral_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="@string/neutral"
    />
    <RadioButton
        Android:id="@+id/agree_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="@string/agree"
    />
    <RadioButton
        Android:id="@+id/strong_agree_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="5"
    />
</RadioGroup>
<TextView
    Android:id="@+id/disagree_label"
    Android:text="@string/strongly_disagree_txt"
    Android:layout_below="@id/radio_group" 
    style="@style/TextAppearance"
    Android:visibility="gone"
    />
<TextView
    Android:id="@+id/agree_label"
    Android:text="@string/strongly_agree_txt"
    Android:layout_below="@id/radio_group" 
    Android:layout_alignParentRight="true" 
    style="@style/TextAppearance"
    Android:layout_width="wrap_content"
    Android:visibility="gone"
    />
32
Lucy

Habe meine Lösung gefunden. Eine Kombination aus Gewicht und Schwerkraft und das Entfernen der Ränder. Die Funkgruppe kann layout_width = "fill_parent" haben. Jedes Optionsfeld sollte layout_weight = "1" haben, aber die layout_width für jedes Optionsfeld muss immer noch angegeben werden, um die Standardeinstellung von "37" außer Kraft zu setzen.

        <RadioGroup Android:id="@+id/overall"
        Android:layout_width="fill_parent" Android:layout_height="80dp"
        Android:gravity="center"
        Android:orientation="horizontal">

Der erste Knopf sollte haben:

                Android:layout_weight="1"
            Android:layout_gravity="center|left"

Der letzte Knopf sollte haben:

            Android:layout_gravity="center|right"

Hinweis: Für alle Schaltflächen ist layout_gravioty festgelegt, für die Schaltfläche ganz rechts jedoch keine layout_weight-Einstellung.

9
capn

Wenn ich Ihre Frage richtig verstanden habe, können Sie auch den nächsten Code in RadioGroup ausprobieren:

<ToggleButton
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />

<View
    Android:id="@+id/view1"
    Android:layout_width="0dp"
    Android:layout_height="wrap_content"
    Android:layout_weight="1" />

<ToggleButton
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />
0
alcsan

Haben Sie jemals eine Lösung dafür gefunden? Meine Zwischenlösung könnte helfen, aber es ist nicht das vollständige Bild für mich. Ich konnte dies durch Festlegen bestimmter Breiten tun, aber dies ermöglicht es der Ansicht nicht, die Größe an die Bildschirmbreite anzupassen:

    <RelativeLayout  
    Android:id="@+id/overall_layout"
    Android:layout_width="290dp" Android:layout_height="wrap_content">

    <RadioGroup Android:id="@+id/overall"
        Android:layout_width="fill_parent" Android:layout_height="wrap_content"
        Android:orientation="horizontal">
        <RadioButton Android:id="@+id/overall_1" Android:tag="1"
            Android:button="@drawable/radio_1"
            Android:layout_width="50dp"
            Android:layout_marginRight="10dp"
            Android:layout_height="wrap_content"></RadioButton>
        <RadioButton Android:id="@+id/overall_2" Android:tag="2"
            Android:button="@drawable/radio_2"
            Android:layout_width="50dp"
            Android:layout_marginRight="10dp"
            Android:layout_height="wrap_content"></RadioButton>
        <RadioButton Android:id="@+id/overall_3" Android:tag="3"
            Android:button="@drawable/radio_3"
            Android:layout_width="50dp"
            Android:layout_marginRight="10dp"
            Android:layout_height="wrap_content"></RadioButton>
        <RadioButton Android:id="@+id/overall_4" Android:tag="4"
            Android:button="@drawable/radio_4"
            Android:layout_width="50dp"
            Android:layout_marginRight="10dp"
            Android:layout_height="wrap_content"></RadioButton>
        <RadioButton Android:id="@+id/overall_5" Android:tag="5"
            Android:button="@drawable/radio_5"
            Android:layout_width="50dp"
            Android:layout_height="wrap_content"></RadioButton>
    </RadioGroup>
    <TextView Android:text="left" Android:id="@+id/left"
        Android:layout_below="@id/overall"
        Android:layout_alignParentLeft="true"
        Android:layout_width="wrap_content" Android:layout_height="wrap_content"></TextView>
    <TextView Android:text="right" Android:id="@+id/right"
        Android:layout_below="@id/overall"
        Android:layout_alignParentRight="true"
        Android:layout_width="wrap_content" Android:layout_height="wrap_content"></TextView>
    </RelativeLayout>

Beachten Sie, dass die letzte Schaltfläche keinen Rand enthält.

Ich versuche, 5 benutzerdefinierte Schaltflächen in einer Radiogruppe zu haben, wobei die erste linksbündig und die letzte rechtsbündig ist. Die Schaltflächen sind genau 50 Pixel breit und ich möchte keinen Text, der den Schaltflächen einzeln zugeordnet wird. Die 2 Texte unten sind im relativen Layout links und rechtsbündig. Die Verwendung von "layout_gravity" hat keine Auswirkung, und "layout_weight" fügt rechts neben jeder Schaltfläche eine Auffüllung hinzu, wodurch die Schaltfläche ganz rechts nicht mehr gerechtfertigt ist.

Daran zu ziehen.

0
capn