From
Developer.android.com: “A toggle button allows the user to change a setting
between two state…”
In this tutorial, we show you how to customize a toggle button,
add a click listener by a few different ways, and how to get the setOnCheckedChangeListener for this toggle button.
This project is developed in Eclipse 4.2.0.
1.
Make a custom toggle button by XML Layout
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btntoggle_selector"
android:textColor="@android:color/white"
android:textOff="Toggle Button OFF"
android:textOn="Toggle Button
ON "
android:onClick="onToggleButtonClick"/>
We need a xml file “btntoggle_selector” in folder drawable:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_fbautoshare_selected" android:state_checked="true" android:state_pressed="true"/>
<item android:drawable="@drawable/bg_fbautoshare_selected" android:state_checked="true" android:state_focused="false"/>
<item android:drawable="@drawable/bg_fbautoshare_normal" android:state_checked="false" android:state_pressed="true"/>
<item android:drawable="@drawable/bg_fbautoshare_normal" android:state_checked="false" android:state_focused="false"/>
</selector>
And of course two image with name “bg_fbautoshare_normal” and “bg_fbautoshare_selected” for two state of RadioButton.
In my tutorial I use the 9-patch file. For detail of 9-patch, see http://developer.android.com/tools/help/draw9patch.html
2. Two ways to attach a click listener to the toggle button, when user click on the toggle
button, show info on the textview control
2.1.
Use android:onClick attribute in your toggle button XML definition:
android:onClick="onToggleButtonClick"
Within the activity that hosts this layout, the following
method handles the click event for toggle button:
public void onToggleButtonClick(View view) {
if(togglebutton.isChecked())
textview.setText("ToggleButton is checked ON on it");
else
textview.setText("ToggleButton is checked OFF on it");
}
2.2. Or using an OnClickListener
togglebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
boolean checked = ((ToggleButton) v).isChecked();
if (checked)
textview.setText("ToggleButton is checked ON by setOnClickListener");
else
textview.setText("ToggleButton is checked OFF
by setOnClickListener");
}
});
3. How to get the setOnCheckedChangeListener for toggle button. This method is
executed when there is any change in the state of the toggle button. You can
change the state of toggle button from a button like:
button = (Button)findViewById(R.id.button1);
// when click
on the button
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
togglebutton.setChecked(!togglebutton.isChecked());
}
});
And if you want to do something when state of toggle button
is changed, you want to some code below:
// this method implement when have
change between state ON and OFF of toggle button
togglebutton.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if
(isChecked) {
// The toggle is enabled
textview.setText("ToggleButton is checked ON
click on button");
} else {
// The toggle
is disabled
textview.setText("ToggleButton is checked OFF
by click on button");
}
}
});
You con download all source codes from here
Reference:
http://www.technotalkative.com/android-custom-toggle-button-example/
Cool one with an excellent UI, Even this http://www.compiletimeerror.com/2013/08/android-togglebutton-example.html might help, have a look..
ReplyDelete