2015-04-02 155 views
1

我想在android中为单选按钮实现自定义图标。即我希望单选按钮图标是我自己选择的一种。我可以用单选按钮中的android:button属性来做到这一点,但当用户单击它时,我没有弄清楚如何定义它。在我的应用程序中,当用户点击它时,没有任何反应。我也遵循这个指南here单选按钮的自定义图标

I have 2 images : 
A. tire.png (When the radio button is not clicked) 
B. tireinvert.png (When the radio button is clicked) 

我RadioButton.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="com.techfrk.customizeradiobutton.MainActivity" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 

    <RadioGroup 
       android:id="@+id/newexprgrp" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 

       <RadioButton 
       android:id="@+id/tvllocrbtn" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_marginLeft="20dp" 
       android:layout_marginTop="40dp" 
       android:text="Travelling Expense (Local)" 
       /> 

        <RadioButton 
       android:id="@+id/tvloutrbtn" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_marginLeft="20dp" 
       android:layout_marginTop="15dp" 
       android:text="Travelling Expense (Outstation)" 

       /> 

       <RadioButton 
       android:id="@+id/phnexprbtn" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_marginLeft="20dp" 
       android:layout_marginTop="15dp" 
       android:text="Phone Expense" 

       /> 

        <RadioButton 
       android:id="@+id/miscexprbtn" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:layout_marginLeft="20dp" 
       android:layout_marginTop="15dp" 
       android:text="Misc Expense" 

       /> 
      </RadioGroup> 

</RelativeLayout> 

任何人都可以请指导我?

回答

8

右击你的文件夹绘制则 - >新建 - > Android的XML文件 - >选择根元素“选择”,然后粘贴下面的代码文件中:

<item android:drawable="@drawable/tire" android:state_checked="true"/> 
    <item android:drawable="@drawable/tireinvert" android:state_checked="false"/> 

然后在单选按钮的XML加入这一行:

android:button="@drawable/radio" 

这里拉德IO是我们在绘制文件夹中创建的选择XML文件

+0

嘿,非常感谢。那做了这个工作。 – TechFrk 2015-04-02 11:47:45

+0

欢迎您... – 2015-04-02 12:12:30

0

试试这个

<RadioGroup 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    android:orientation="horizontal" 
    android:layout_marginLeft="10dp" 
    android:id="@+id/segment_img" 

    android:layout_gravity="right|center_vertical" 
    android:checkedButton="@+id/button_add"> 
     <RadioButton 
      android:id="@+id/button_male" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@color/violetbg" 
      android:button="@drawable/malewhite" /> 

     <RadioButton 
      android:id="@+id/button_female" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 

      android:button="@drawable/female" />  
</RadioGroup> 
+0

我在我的XML文件中有多个单选按钮。这将只有一个单选按钮才有效。 – TechFrk 2015-04-02 11:33:07

+0

有两个按钮button_female和button_male.please发布您的代码,否则 – 2015-04-02 11:35:59

+0

我已更新我的文章。 – TechFrk 2015-04-02 11:36:55

3

//在第一次创建自定义无线电custom_radio_search_location.xml文件您绘制

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_checked="true" 
      android:drawable="@drawable/invite_radio_check" /> 
     <item android:state_checked="false" 
      android:drawable="@drawable/invite_radio_uncheck" /> 
    </selector> 

//比使用custom_radio_search_location.xml在布局

<RadioGroup 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:weightSum="3" > 

       <RadioButton 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:background="@android:color/transparent" 
        android:button="@null" 
        android:checked="true" 
      android:drawableLeft="@drawable/custom_radio_search_location" 
        android:text="A" 
        android:textColor="@android:color/black" 
        /> 

       <RadioButton 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:background="@android:color/transparent" 
        android:button="@null" 
      android:drawableLeft="@drawable/custom_radio_search_location" 
        android:text="B" 
        android:textColor="@android:color/black" 
        /> 

       <RadioButton 

        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:background="@android:color/transparent" 
        android:button="@null" 
      android:drawableLeft="@drawable/custom_radio_search_location" 
        android:text="C" 
        android:textColor="@android:color/black" 
        /> 
      </RadioGroup>