Apakah mungkin menambahkan sedikit ruang antara RadioButton dan label sambil tetap menggunakan komponen bawaan Android? Secara default, teks terlihat sedikit berkerut.
<RadioButton android:id="@+id/rb1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My Text"/>
Saya sudah mencoba beberapa hal:
Menentukan margin dan padding tampaknya menambah spasi di sekitar seluruh elemen (tombol dan teks, bersama-sama). Itu masuk akal, tapi tidak melakukan apa yang saya butuhkan.
Membuat drawable khusus melalui XML yang menentukan gambar untuk status dicentang dan tidak dicentang, lalu menambahkan beberapa piksel ekstra ke sisi kanan setiap gambar. Ini seharusnya berfungsi, tetapi sekarang Anda melangkah keluar dari UI default. (Bukan akhir dunia, tapi tidak ideal)
Tambahkan spasi ekstra ke awal setiap label. Android tampaknya memangkas karakter spasi utama, seperti dalam "My String", tetapi menentukan unicode U + 00A0, seperti dalam "\ u00A0My String" dapat membantu. Ini berfungsi, tetapi tampaknya agak kotor.
Ada solusi yang lebih baik?
sumber
Tidak yakin apakah ini akan menyelesaikan masalah Anda, tetapi sudahkah Anda mencoba properti "Padding left" Radio Button dengan nilai 50dip atau lebih
sumber
Saya mencoba beberapa cara dan selesai dengan yang ini berfungsi dengan benar pada emulator dan perangkat:
<RadioButton android:background="@android:color/transparent" android:button="@null" android:drawableLeft="@drawable/your_own_selector" android:drawablePadding="@dimen/your_spacing" />
sumber
Menambahkan marjin antara radiobutton yang label oleh paddingLeft :
android:paddingLeft="10dip"
Cukup atur padding kustom Anda .
Properti xml RadioButton.
<RadioButton android:id="@+id/radHighest" android:layout_width="wrap_content" android:layout_height="wrap_content" android:button="@drawable/YourImageResource" android:drawablePadding="50dp" android:paddingLeft="10dip" android:text="@string/txt_my_text" android:textSize="12sp" />
Selesai
sumber
Gunakan atribut XML berikut. Itu berhasil untuk saya
Untuk API <= 16 digunakan
android:paddingLeft="16dp"
Untuk API> = 17 digunakan
android:paddingStart="@16dp"
Misalnya:
<android.support.v7.widget.AppCompatRadioButton android:id="@+id/popularityRadioButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:checked="true" android:paddingEnd="@dimen/radio_button_text" android:paddingLeft="@dimen/radio_button_text" android:paddingRight="@dimen/radio_button_text" android:paddingStart="@dimen/radio_button_text" android:text="Popularity" android:textSize="@dimen/sort_dialog_text_size" android:theme="@style/AppTheme.RadioButton" />
Lebih jauh lagi:
drawablePadding
atribut tidak berfungsi. Ini hanya berfungsi jika Anda menambahkan drawable di tombol radio Anda. Misalnya:<RadioButton android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:button="@null" android:drawableEnd="@android:drawable/btn_radio" android:drawablePadding="56dp" android:drawableRight="@android:drawable/btn_radio" android:text="New RadioButton" />
sumber
Tidak dapat mencoba ini sekarang untuk memverifikasi, tetapi apakah Anda sudah mencoba untuk melihat apakah atribut android: drawablePadding sesuai dengan yang Anda butuhkan?
sumber
final float scale = this.getResources().getDisplayMetrics().density; checkBox.setPadding(checkBox.getPaddingLeft() + (int)(10.0f * scale + 0.5f), checkBox.getPaddingTop(), checkBox.getPaddingRight(), checkBox.getPaddingBottom());
sumber
Padding antara drawable dan teks. Ini akan dicapai dengan menambahkan baris di bawah ini dalam file xml.
android:drawablePadding="@dimen/10dp"
sumber
@dimen/10dp
praktik burukSaya sudah mencoba, "android: paddingLeft" akan berfungsi. paddingLeft hanya akan mempengaruhi teks sementara gambar radio tetap pada posisi aslinya.
sumber
"Android: paddingLeft" sepertinya hanya berfungsi dengan benar pada android 4.2.2
Saya telah mencoba hampir semua versi android dan hanya bekerja pada versi 4.2.2.
sumber
Saya menggunakan pendekatan berbeda yang menurut saya harus berfungsi pada semua versi API. Alih-alih menerapkan padding, saya menambahkan tampilan kosong antara ke RadioButtons:
<View android:layout_width="20dp" android:layout_height="1dp" />
Ini akan memberi Anda bantalan 20dp.
sumber
Saya datang ke sini mencari jawaban dan cara paling sederhana (setelah beberapa pemikiran) adalah menambahkan spasi di awal label itu sendiri seperti itu
<RadioGroup android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/btnChangeMode" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:layout_below="@+id/view3" android:gravity="center|left" android:id="@+id/ledRadioGroup"> <RadioButton android:button="@drawable/custom_radio_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" On" android:layout_marginRight="6dp" android:id="@+id/ledon" android:textColor="@color/white" /> <RadioButton android:button="@drawable/custom_radio_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" Off" android:layout_marginLeft="6dp" android:id="@+id/ledoff" android:textColor="@color/white" />
sumber
untuk saya bekerja:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true"> <layer-list> <item android:right="5dp"> <shape android:paddingLeft="5dp" android:shape="oval"> <size android:width="20dp" android:height="20dp" /> <solid android:color="@color/blue" /> </shape> </item> </layer-list> </item> <item android:paddingLeft="5dp" android:state_checked="false"> <layer-list> <item android:right="5dp"> <shape android:paddingLeft="5dp" android:shape="oval"> <size android:width="20dp" android:height="20dp" /> <solid android:color="@color/grey" /> </shape> </item> </layer-list> </item> </selector>
sumber
<RadioButton android:id="@+id/rb1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@null" android:paddingLeft="20dp" android:text="1" android:textColor="@color/text2" android:textSize="16sp" android:textStyle="bold" />
sumber
Anda dapat kode ini pada file XML Anda
<RadioButton android:id="@+id/rButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawablePadding="50dp" android:paddingLeft="10dip" android:text="@string/your_text" />
atau gunakan ini di kelas Aktivitas
radioButton.setPadding(12, 10, 0, 10);
sumber
Buat gaya dalam style.xml seperti ini
<style name="Button.Radio"> <item name="android:paddingLeft">@dimen/spacing_large</item> <item name="android:textSize">16sp</item> </style>
Letakkan gaya itu di tombol radio
<RadioButton android:id="@+id/rb_guest_busy" android:layout_width="match_parent" android:layout_height="48dp" android:text="@string/guest_is_waiting" android:textSize="@dimen/font_size_3x_medium" android:drawablePadding="@dimen/spacing_large" android:textColor="@color/color_text_heading_dark" style="@style/Button.Radio"/>
Anda dapat mengubah atribut apa pun yang sama seperti tombol karena RadioButton secara tidak langsung mewarisi tombol.
sumber
Saya tahu ini adalah pertanyaan lama, tetapi dengan solusi ini, saya akhirnya merasa tenang dan melupakan API level.
RadioGroup vertikal sisi kiri dengan tampilan teks vertikal sisi kanan.
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical"> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RadioGroup> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="8dp" android:gravity="center_vertical" android:text="Radio 1"/> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="8dp" android:gravity="center_vertical" android:text="Radio 2"/> </LinearLayout> </LinearLayout>
sumber
Anda dapat mencoba menggunakan atribut gravitasi tombol radio.
<RadioButton android:id="@+id/rb_all" android:layout_width="match_parent" android:layout_height="wrap_content" android:checked="true" android:gravity="right|center_vertical" android:padding="@dimen/padding_30dp" android:text="@string/filter_inv_all" android:textColor="@color/black" android:textSize="@dimen/text_size_18" />
Ini akan meratakan teks ke ujung paling kanan. Lihat radio pertama di gambar.
sumber