Estou tentando obter o efeito radiobutton para botões regulares no android
Eu tenho um simples botão de opção do Android abaixo
O código para isso é :
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="RadioButton1" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton2" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton3" />
</RadioGroup>
</RelativeLayout>
Como personalizá-lo como abaixo:
Obrigado !
[EDITAR] usando o código de uma das respostas
Mas o nome do botão é ofuscado pela opção de seleção como removê-lo?
{EDITAR} mais alterações
No final das alterações, pelo menos eu deveria saber qual botão selecionei dentre três botões de opção .... é possível obter como abaixo?
Respostas:
Adicione um drawable de plano de fundo que faça referência a uma imagem ou a um seletor (como abaixo) e torne o botão transparente:
Se você desejar que seus botões de opção tenham um recurso diferente quando marcado, crie um fundo de seleção:
res / drawable / yourbuttonbackground.xml
No seletor acima, referenciamos dois desenháveis
a
eb
, eis como os criamos:res / drawable / a.xml - Estado selecionado
res / drawable / b.xml - Estado regular
Mais sobre desenháveis aqui: http://developer.android.com/guide/topics/resources/drawable-resource.html
fonte
android:button="@android:color/transparent"
para removê-lo.Atualizei a resposta aceita e removi coisas desnecessárias.
Eu criei XML para a seguinte imagem.
Seu código XML para
RadioButton
será:radio_flat_selector.xml
para seletor de plano de fundo:radio_flat_selected.xml
para o botão selecionado:radio_flat_regular.xml
para seletor regular:Todo o código de 3 arquivos acima estará na
drawable/
pasta.Agora também precisamos do
Text
Seletor de cores para alterar a cor do texto de acordo.radio_flat_text_selector.xml
para seletor de cores de texto(Use a
color/
pasta para este arquivo.)Nota: Consultei muitas respostas para este tipo de solução, mas não encontrei uma boa solução, por isso a faço.
Espero que seja útil para você.
Obrigado.
fonte
Use o mesmo formato de arquivo XML da resposta de Evan, mas um arquivo extraível é tudo o que você precisa para formatar.
E seu arquivo extraível separado:
fonte
Definir
android:background
eandroid:button
do RadioButton como a resposta aceita não funcionou para mim. A imagem desenhável estava sendo exibida como plano de fundo (embora o eventoandroid:button
estivesse sendo definido como transparente) no texto do botão de opção comoassim, deu radiobutton como radiobuttonstyle.xml personalizável
e radiobuttonstyle.xml são os seguintes
e depois desse botão de opção com estilo de botão personalizado funcionou.
fonte
Você deve preencher o atributo "Button" da classe "CompoundButton" com um caminho extraível XML ( my_checkbox ). No drawable XML, você deve ter:
Não se esqueça de substituir my_checkbox pelo nome do arquivo da caixa de seleção drawable, checkbox_not_checked pelo seu drawable PNG, que é sua caixa de seleção quando não está marcada e checkbox_checked com sua imagem quando marcada.
Para o tamanho, atualize diretamente os parâmetros de layout.
fonte
android:background
vs theandroid:button
; declarandoandroid:button
como transparente. Dessa forma, o texto pode ficar dentro do botão.Para ocultar o botão de opção padrão, sugiro removê-lo em vez de torná-lo transparente, pois todo o feedback visual é tratado pelo plano de fundo desenhável:
Também seria melhor usar estilos, pois existem vários botões de opção:
Você precisará do Seslyn customButtonBackground também.
fonte
A melhor maneira de adicionar drawable personalizado é:
A sobreposição de sombra do drawable personalizado é removida aqui.
fonte
background
. Se você definir o fundo, você não pode adicionar texto para o RadioButton, e necessidade de colocar o seu próprio TextViewManeira simples tente isso
Crie um novo layout na pasta drawable e chame-o de custom_radiobutton (você também pode renomear)
Use isso em sua atividade de layout
fonte
O código abaixo é um exemplo de botão de opção personalizado. siga as etapas abaixo.
Arquivo XML.
2. adicione o xml personalizado para os botões de opção
2.1.outros drawable
custom_other_button.xml
2.2.desenho feminino
custom_female_button.xml
2.3 masculino drawable
custom_radio_button.xml
fonte
Sei que essa é uma resposta tardia, mas, olhando para developer.android.com, parece que o botão Alternar seria ideal para a sua situação.
http://developer.android.com/guide/topics/ui/controls/togglebutton.html
E é claro que você ainda pode usar as outras sugestões para ter um plano de fundo desenhável para obter uma aparência personalizada desejada.
Agora, se você deseja fazer a edição final e ter um efeito "halo" nos botões, use outro seletor personalizado para fazer isso.
fonte