É possível adicionar um pouco de espaço entre um RadioButton e o rótulo enquanto ainda usa os componentes internos do Android? Por padrão, o texto parece um pouco amassado.
<RadioButton android:id="@+id/rb1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My Text"/>
Eu tentei algumas coisas:
Especificar margem e preenchimento parece adicionar espaço ao redor do elemento inteiro (botão e texto, juntos). Isso faz sentido, mas não faz o que preciso.
Criação de um drawable personalizado por meio de XML especificando imagens para os estados marcados e não marcados e, a seguir, adicionando alguns pixels extras ao lado direito de cada imagem. Isso deve funcionar, mas agora você está saindo da IU padrão. (Não é o fim do mundo, mas não é o ideal)
Adicione espaços em branco extras no início de cada rótulo. O Android parece cortar um caractere de espaço inicial, como em "My String", mas especificar unicode U + 00A0, como em "\ u00A0My String", resolve. Isso funciona, mas parece meio sujo.
Alguma solução melhor?
fonte
Não tenho certeza se isso resolverá o problema, mas você tentou a propriedade "Preenchimento à esquerda" do botão de rádio com um valor de 50dip ou mais
fonte
Tentei várias maneiras e concluí com esta funcionando corretamente no emulador e nos dispositivos:
<RadioButton android:background="@android:color/transparent" android:button="@null" android:drawableLeft="@drawable/your_own_selector" android:drawablePadding="@dimen/your_spacing" />
fonte
Adicione margem entre um botão de opção e seu rótulo por paddingLeft :
android:paddingLeft="10dip"
Basta definir o seu preenchimento personalizado .
Propriedade xml de 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" />
Feito
fonte
Use os seguintes atributos XML. Funcionou para mim
Para API <= 16 use
android:paddingLeft="16dp"
Para API> = 17 use
android:paddingStart="@16dp"
Por exemplo:
<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" />
Mais mais: o
drawablePadding
atributo não funciona. Só funciona se você adicionar um drawable ao botão de opção. Por exemplo:<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" />
fonte
Não é possível tentar isso agora para verificar, mas você tentou ver se o atributo android: drawablePadding faz o que você precisa?
fonte
final float scale = this.getResources().getDisplayMetrics().density; checkBox.setPadding(checkBox.getPaddingLeft() + (int)(10.0f * scale + 0.5f), checkBox.getPaddingTop(), checkBox.getPaddingRight(), checkBox.getPaddingBottom());
fonte
O preenchimento entre os drawables e o texto. Isso será alcançado adicionando a linha abaixo no arquivo xml.
android:drawablePadding="@dimen/10dp"
fonte
@dimen/10dp
prática ruimEu tentei, "android: paddingLeft" funcionará. paddingLeft afetará apenas o texto enquanto mantém a imagem do rádio na posição original.
fonte
O "android: paddingLeft" só parece funcionar corretamente no android 4.2.2
Eu tentei quase todas as versões do Android e só funciona na versão 4.2.2.
fonte
Estou usando uma abordagem diferente que acho que deve funcionar em todas as versões da API. Em vez de aplicar preenchimento, estou adicionando uma visualização vazia entre os RadioButtons:
<View android:layout_width="20dp" android:layout_height="1dp" />
Isso deve fornecer um preenchimento de 20dp.
fonte
Eu vim aqui em busca de uma resposta e a maneira mais simples (depois de pensar um pouco) era adicionar espaçamento no início do próprio rótulo assim
<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" />
fonte
para mim funciona:
<?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>
fonte
<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" />
fonte
Você pode este código em seu arquivo XML
<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" />
ou use isso na aula de atividades
radioButton.setPadding(12, 10, 0, 10);
fonte
Crie um estilo em style.xml como este
<style name="Button.Radio"> <item name="android:paddingLeft">@dimen/spacing_large</item> <item name="android:textSize">16sp</item> </style>
Coloque esse estilo no botão de opção
<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"/>
Você pode alterar qualquer atributo como o botão, pois RadioButton herda indiretamente o botão.
fonte
Eu sei que é uma questão antiga, mas com esta solução, finalmente consegui ficar tranquilo e esquecer o nível de API.
RadioGroup vertical do lado esquerdo com visualização de texto vertical do lado direito.
<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>
fonte
Você pode tentar usar o atributo de gravidade do botão de rádio.
<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" />
Isso alinhará o texto na extremidade direita. Confira o primeiro rádio da imagem.
fonte