I have create two XML file. one for Radio Buttons Background selector and second for Radio Buttons text color selector.
1. Create One XML file in "res/drawable/rbtn_selector.xml" add below XML code for Radio Button background.
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true"><shape> <solid android:color="#1c5fab" /> <stroke android:width="1dp" android:color="#1c5fab" /> </shape></item> <item android:state_checked="false"><shape android:shape="rectangle"> <solid android:color="#ffffff" /> <stroke android:width="1dp" android:color="#1c5fab" /> </shape></item> </selector>Note : If we have custom background PNG images for radio Button background then create Selector like below(Put your images in "res/drawable" folder).
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/bg_radio_button_checked" android:state_checked="true"/> <item android:drawable="@drawable/bg_radio_button_unchecked" android:state_checked="false"/> </selector>
2. Create One XML file in "res/drawable/rbtn_textcolor_selector.xml" add below XML code for Radio Buttons Text selector color.(Text Color Selector xml file)
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:color="#ffffffff"/> <item android:color="#ff1c5fab"/> </selector>3. create XML file in layout folder "res/layout/activity_customradiobutton.xml".
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingTop="10dp" > <RadioGroup android:id="@+id/radioGroup1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:gravity="center" android:orientation="horizontal" > <RadioButton android:id="@+id/radioAndroid" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/rbtn_selector" android:button="@null" android:checked="true" android:gravity="center" android:padding="5dp" android:text="Android" android:textColor="@drawable/rbtn_textcolor_selector" /> <RadioButton android:id="@+id/radioiPhone" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/rbtn_selector" android:button="@null" android:gravity="center" android:padding="5dp" android:text="iPhone" android:textColor="@drawable/rbtn_textcolor_selector" /> <RadioButton android:id="@+id/radioWindows" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/rbtn_selector" android:button="@null" android:gravity="center" android:padding="5dp" android:text="Windows" android:textColor="@drawable/rbtn_textcolor_selector" /> </RadioGroup> </LinearLayout>4. Create on activity java file "CustomRadioButtonActivity.java"
I have use setOnCheckedChangeListener for a callback to be invoked when the checked radio button changed in this group.
import android.app.Activity; import android.os.Bundle; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.Toast; public class CustomRadioButtonActivity extends Activity { private RadioGroup radioGroup1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_customradiobutton); radioGroup1 = (RadioGroup) findViewById(R.id.radioGroup1); // Checked change Listener for RadioGroup 1 radioGroup1.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.radioAndroid: Toast.makeText(getApplicationContext(), "Android RadioButton checked", Toast.LENGTH_SHORT).show(); break; case R.id.radioiPhone: Toast.makeText(getApplicationContext(), "iPhone RadioButton checked", Toast.LENGTH_SHORT).show(); break; case R.id.radioWindows: Toast.makeText(getApplicationContext(), "windows RadioButton checked", Toast.LENGTH_SHORT).show(); break; default: break; } } }); } }
5. Add your activity class in AndroidManifest.xml file
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.limbani.masterapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.limbani.masterapp.CustomRadioButtonActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>Doanload Sample Here
enjoy :)
Thank you.
A very good alternative to using tabs.
ReplyDeleteI used this together with fragments. This works great!
Thanks a lot!
how to use it with swipe as in tablayout?
Deletehow can we add swipe functionality as we can have in tablayout?
Deletethanks :)
ReplyDeleteThanks. This helped a lot.
ReplyDeleteThanks it really helped
ReplyDeletecan u share me the source code
ReplyDeleteVery Nice UX
ReplyDeleteThanks
DeleteThank You. You saved me.
ReplyDeleteNice instructions. Thanks a lot for sharing.
ReplyDeleteJust a note, on item 5 fix the spelling of Manifest ;-)
Muito bom!!
ReplyDeleteAwesome! thank you.
ReplyDeleteThank you
DeleteHi
ReplyDeleteThe problem I have is that the image inserted in the radio button does not stretch, that is, it doesn't occupy the whole space of the radio button
thanks!
Nice and elegant solution. Thanks
ReplyDelete