2012-09-24 12 views
10

Chcę mieć "etykietę", - tekst ustawiony w twoim RadioButton, aby pokazać lewy przycisk i mieć trochę wypełnienia pomiędzy.Lewy przycisk RadioButton z marginesem na Androidzie

Dodanie dodatkowej TextView na układ nie działa, ponieważ mój RadioGroup nie działa (mogę wybrać kilka przycisków), jeśli dodać coś innego wtedy RadioButton do RadioGroup.

Tak, jak mogę zmienić RadioButton być <text><buttondrawable> zamiast <buttondrawable><text>

Odpowiedz

36

Można to osiągnąć przez ustawienie android:button="@null" i dodanie rozciągliwej z RadioButton jak android:drawableRight. Możesz zmienić wypełnienie między tekstem a rysunkiem za pomocą android:drawablePadding.

<RadioGroup 
     android:id="@+id/radios" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:inputType="text" 
     android:orientation="vertical" > 

     <RadioButton 
      android:id="@+id/first" 
      android:button="@null" 
      android:drawableRight="@android:drawable/btn_radio" 
      android:drawablePadding="20dp" 
      android:layout_width="200dip" 
      android:layout_height="wrap_content" 
      android:text="@string/first" 
      android:textSize="20dip" /> 

     <RadioButton 
      android:id="@+id/second" 
      android:button="@null" 
      android:drawableRight="@android:drawable/btn_radio" 
      android:drawablePadding="20dp" 
      android:layout_width="200dip" 
      android:layout_height="wrap_content" 
      android:text="@string/second" 
      android:textSize="20dip" /> 
    </RadioGroup> 
</RelativeLayout> 
+0

Posiadanie dwóch osób wewnątrz a RadioGroup, wciąż mogę wybrać obie. –

+0

Zaktualizowałem moją odpowiedź. Sprawdź to teraz. –

+0

Dzięki! Bardzo sprytne rozwiązanie i mogę łatwo dodać dopełnienie, które chciałem z 'android: drawablePadding'. –

1

Powyższa odpowiedź sprawia, że ​​obraz nie ma wybranego stanu.

To może pomóc:

  • Na API < = 16 można ustawić dopełnienie lewy przycisk radiowy, aby ustawić dopełnienie względem aby zobaczyć granice przycisku radiowego. Dodatkowo łatka dziewięć tło również zmienia granice widoku w stosunku do widoku.

  • W interfejsie API 17 lewy margines jest w stosunku do wyciąganego przycisku radiowego. To samo dotyczy około łaty dziewiątej. Aby lepiej zilustrować różnice w dopełnieniu, zobacz załączony zrzut ekranu.

Jeśli przekopujesz kod, znajdziesz w api 17 nową metodę o nazwie getHorizontalOffsetForDrawables. Ta metoda jest wywoływana podczas obliczania lewego wypełnienia dla przycisku radiowego (stąd dodatkowa przestrzeń przedstawiona na rysunku).

TL; DR Trzeba radiowy przycisk styl dla min SDK jesteś wspieranie i inny styl API 17+

odpowiedź jest od this same question odpowiedział @James Baca

+0

Prosimy o dodanie esencji do fragmentu kodu, aby przyszli czytelnicy nie musieli podążać za linkiem, chyba że chcą więcej szczegółowych informacji. –

+0

Kolejność odpowiedzi może być różna, więc lepiej odwołaj się do odpowiedzi pod nazwą plakatu. –

+0

dzięki za Twoją sugestię @JeroenKransen – actsai