2010-12-29 8 views
17

Używam TableLayout z TableRows jako moją główną aktywność.Zarządzaj układem wewnątrz poziomo zorientowanej radiogrupy

Wewnątrz TableLayout znajduje się grupa radiowa zawierająca 2 przyciski radiowe wewnątrz aktywności (grupa radiowa znajduje się wewnątrz wiersza tabeli). Chcę móc wyrównać prawy przycisk radiowy do prawego ekranu krawędzi, więc "przerwa" znajduje się pomiędzy lewym przyciskiem a prawym przyciskiem (zamiast prawego przycisku radiowego). tj.

Więc zamiast mieć
| (x) (x) luka |
Będę miał
| (x) gap (x) |

gdzie (x) są przyciski radiowe i | to brzegi ekranu mogą używać grawitacji (środek_przycinania), aby umieścić oba przyciski w środku (tj. | gap (x) (x) gap | |) jednak nie mogę ich podzielić sposób, w jaki chcę, jak powiedział przed

Odpowiedz

0

Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? Moje pośrednie rozwiązanie może pomóc, ale nie jest to dla mnie pełny obraz. Byłem w stanie to zrobić poprzez ustawienie konkretnych szerokości, ale nie pozwala na wgląd do zmiany rozmiaru w celu dopasowania do szerokości ekranu:

<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> 

Uwaga nie ma marginesu na ostatni guzik.

Próbuję mieć 5 niestandardowych przycisków w grupie radiowej, z 1 wyrównanym do lewej i ostatnim wyrównanym do prawej. Przyciski mają dokładnie 50 pikseli szerokości i nie chcę żadnego tekstu powiązanego z przyciskami osobno. Dwa poniższe teksty są lewe i prawe - poprawione we względnym układzie. Użycie "layout_gravity" nie ma żadnego efektu, a "layout_weight" dodaje dopełnienie po prawej stronie każdego przycisku, co powoduje, że prawy przycisk nie jest już usprawiedliwiony.

Wiele ciągnięcia za włosy na ten temat.

9

Znaleziono moje rozwiązanie. Połączenie wag i grawitacji oraz usuwanie marginesów. Grupa radiowa może mieć layout_width = "fill_parent". Każdy przycisk radiowy powinien mieć layout_weight = "1", ale szerokość układu dla każdego kanału radiowego musi być nadal określona, ​​aby nadpisać domyślną wartość "37", co domyślam się jest domyślną szerokością obrazu przycisku radiowego.

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

Pierwszy przycisk powinien mieć:

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

Ostatni przycisk powinien mieć:

  android:layout_gravity="center|right" 

Uwaga: Wszystkie przyciski posiadają layout_gravioty zestaw, ale ustawienie nie layout_weight w większości prawym przyciskiem!

+0

użyłem, ale robi to działa dla mojego kodu, pierwszy przycisk obejmuje całą linię – elfekz

32

Wszystko, czego potrzebujesz, aby równomiernie przestrzeń dowolną liczbę przycisków poziomo po ekranie:

  1. RadioGroup musi mieć android:orientation="horizontal" & android:layout_width="fill_parent"
  2. Każdy przycisk radiowy musi mieć android:layout_weight="1" wyjątkiem na prawy przycisk (aby ustawić go na prawym brzegu ekranu )!

Landscape screenshot

To zajęło mi godzin do rozszyfrowania.

Oto przykładowy kod, z dodatkiem dwóch etykiet tekstowych oraz prawej i lewej krawędzi ekranu dla aplikacji ankiety.

<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" 
    /> 
+1

Próbowałem to i nie jest to to samo z załączonym zrzutem ekranu. – KarenAnne

+1

Dzięki za to .. :) – KarenAnne

+1

Dziękuję bardzo za to, wyciągam włosy! – Garbit

0

Jeśli Rozumiem pytanie rację, można także spróbować następny kod wewnątrz radiogroup:

<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" /> 
Powiązane problemy