A customizable extension of Android Switches that supports also more than 2 items.
Add Gradle dependency:
dependencies {
compile 'us.belka:androidtoggleswitch:1.2.2'
}
<dependency>
<groupId>us.belka</groupId>
<artifactId>androidtoggleswitch</artifactId>
<version>1.2.2</version>
<type>pom</type>
</dependency>
<belka.us.androidtoggleswitch.widgets.ToggleSwitch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
custom:textToggleLeft="OR"
custom:textToggleRight="AND"/>
<belka.us.androidtoggleswitch.widgets.ToggleSwitch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
custom:textToggleCenter="XOR"
custom:textToggleLeft="OR"
custom:textToggleRight="AND"/>
This can be accomplished only programmatically.
XML
<belka.us.androidtoggleswitch.widgets.ToggleSwitch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
JAVA code
ToggleSwitch toggleSwitch = (ToggleSwitch) findViewById(R.id.multiple_switches);
ArrayList<String> labels = new ArrayList<>();
labels.add("AND");
labels.add("OR");
labels.add("XOR");
labels.add("NOT");
labels.add("OFF");
toggleSwitch.setLabels(labels);
NOTE: Providing a custom array of labels, the attributes textToggle[Left/Center/Right] will be ignored.
<belka.us.androidtoggleswitch.widgets.MultipleToggleSwitch
android:id="@+id/multiple_toggle_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
custom:textToggleCenter="Center"
custom:textToggleLeft="Left"
custom:textToggleRight="Right"
android:layout_gravity="center"
custom:toggleWidth="82dp"/>
NOTE: Please not that it's a different widget MultipleToggleSwitch
instead of the previous ToggleSwitch
.
int getCheckedTogglePosition()
Returns the current checked position
int position = toggleSwitch.getCheckedTogglePosition();
void setCheckedTogglePosition(int position)
Checks the position passed as argument
int position = 3;
toggleSwitch.setCheckedTogglePosition(position);
void setCheckedTogglePosition(int position)
Checks the position passed as argument
int position = 3;
multipleToggleSwitch.setCheckedTogglePosition(position);
void setUncheckedTogglePosition(int position)
Unchecks the position passed as argument
int position = 0;
multipleToggleSwitch.setUncheckedTogglePosition(position);
Set<Integer> getCheckedTogglePositions()
Returns the set of the current checked positions
Set<Integer> checkedPositions = multipleToggleSwitch.getCheckedTogglePositions();
toggleSwitch.setOnToggleSwitchChangeListener(new ToggleSwitch.OnToggleSwitchChangeListener(){
@Override
public void onToggleSwitchChangeListener(int position, boolean isChecked) {
// Write your code ...
}
});
It is possible to customize the buttons applying the following options:
Option Name | Format | Description |
---|---|---|
android:textSize | dimension |
Text size of each button |
custom:activeBgColor | color |
Background color of the checked button |
custom:activeTextColor | color |
Text color of the checked button |
custom:inactiveBgColor | color |
Background color of the inactive buttons |
custom:inactiveTextColor | color |
Text color of the inactive buttons |
custom:separatorColor | color |
Color of the vertical separator between inactive buttons |
custom:toggleWidth | dimension |
Width of each button |
custom:cornerRadius | dimension |
Corner Radius in dp |
<belka.us.androidtoggleswitch.widgets.ToggleSwitch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
custom:activeBgColor="@android:color/holo_blue_dark"
custom:activeTextColor="@android:color/white"
custom:inactiveBgColor="@android:color/white"
custom:inactiveTextColor="@android:color/black"
custom:separatorColor="@color/gray_very_light"
custom:textToggleCenter="APPLE"
custom:textToggleLeft="ORANGE"
custom:textToggleRight="BANANA"
custom:toggleWidth="104dp"/>
Lorenzo Rigato, Fabrizio Rizzonelli, Android Developer @Belka
Android-Toggle-Switch is Copyright (c) 2016 Belka, srl. It is free software, and may be redistributed under the terms specified in the LICENSE file.
Belka is a Digital Agency specialized in design, mobile applications development and custom solutions. We love open source software! You can see our projects or look at our case studies.
Interested? Hire us to help build your next amazing project.