{"id":21942054,"url":"https://github.com/malekkamel/android-multitoggle","last_synced_at":"2025-06-12T17:31:48.245Z","repository":{"id":90820803,"uuid":"146165425","full_name":"MalekKamel/android-multitoggle","owner":"MalekKamel","description":"A simple multi-state toggle button for Android.","archived":false,"fork":false,"pushed_at":"2018-09-08T03:47:27.000Z","size":525,"stargazers_count":19,"open_issues_count":4,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-22T18:11:33.674Z","etag":null,"topics":["android-library","android-ui","java-8","toggle-buttons"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MalekKamel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-26T08:49:54.000Z","updated_at":"2024-07-26T13:40:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"28f04695-af27-4527-9dd8-a4e58390aef5","html_url":"https://github.com/MalekKamel/android-multitoggle","commit_stats":null,"previous_names":["malekkamel/android-multitoggle"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MalekKamel/android-multitoggle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MalekKamel%2Fandroid-multitoggle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MalekKamel%2Fandroid-multitoggle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MalekKamel%2Fandroid-multitoggle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MalekKamel%2Fandroid-multitoggle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MalekKamel","download_url":"https://codeload.github.com/MalekKamel/android-multitoggle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MalekKamel%2Fandroid-multitoggle/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259511983,"owners_count":22869323,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-library","android-ui","java-8","toggle-buttons"],"created_at":"2024-11-29T03:16:21.798Z","updated_at":"2025-06-12T17:31:48.218Z","avatar_url":"https://github.com/MalekKamel.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n\n# MultiToggleButton\n### A simple Android multi toggle button\n\n![alt text](https://github.com/ShabanKamell/android-multitoggle/blob/master/blob/master/raw/mtb_example.png \"Sample App\")\n\n# Installation\n[ ![Download](https://api.bintray.com/packages/shabankamel/android/multitogglebutton/images/download.svg) ](https://bintray.com/shabankamel/android/multitogglebutton/_latestVersion)\n```groovy\ndependencies {\n    implementation 'com.sha.kamel:multi-toggle-button:1.8.3@aar'\n}\n\nallprojects {\n repositories { \n  maven { url \"https://dl.bintray.com/shabankamel/android\" } \n }\n}\n```\n# Usage\n\nAdd a button to layout:\n```xml\n\u003ccom.sha.kamel.multitogglebutton.MultiToggleButton  \n  android:id=\"@+id/mtb\"  \n  android:layout_width=\"match_parent\"  \n  android:layout_height=\"wrap_content\"  \n  android:layout_marginTop=\"10dip\"  \n  mtb:labels=\"@array/dogs_array\"  \n  mtb:mtbScrollable=\"true\"  \n  mtb:mtbRoundedCorners=\"true\"  \n  mtb:mtbPressedColor=\"@color/orange_pressed\"  \n  mtb:mtbUnpressedColor=\"@color/orange\"  \n  mtb:mtbColorPressedText=\"@color/white\"  \n  mtb:mtbColorUnpressedText=\"@color/white\"  \n  mtb:mtbCornerRadius=\"8dp\"  \n  /\u003e\n```\n## Listen to item selection\n```java\n mtb.setOnItemSelectedListener((toggleButton, item, index, label, selected) -\u003e {  \n  toast(selected ? \"selected\" : \"deselected\"));  \n});\n```\n## Get selected items\nYou can get selected items.\n```java\nSelected selected = toggleButton.getSelected();\n\nboolean isAnySelected = selected.isAnySelected();\nboolean isAllSelected = selected.isAllSelected();\nboolean isSingleItem = selected.isSingleItem();\n\nint singleItemPosition = selected.getSingleItemPosition();\nTextView singleItem = selected.getSingleItem();\n\nList\u003cTextView\u003e selectedItems = selected.getSelectedItems();\nList\u003cInteger\u003e selectedPositions = selected.getSelectedPositions();\n```\n## Colors\nYou can select any desired color for different states.\n```java\nmtb.setColorRes(R.color.mtb_green, R.color.mtb_gray);\n```\nThere're many methods to set colors. Take a look at `ToggleButton`\n\n## Rounded corners\nyou can set corners rounded:\n```java\nmtb.setRoundedCorners();\n```\n\n## Corners Radius\nYou can set a default radius of `18dp` :\n```java\nmtb.setCornerRadius(20);\n```\n\n\n##### Note:\nif you set corner radius with `setCornerRadius`, no need to call `setRoundedCorners`.\n\n## Multiple Choice\n```java\nmtb.multipleChoice(true)\n```\n\n## Max items to select\nyou can set the maximum items allowed to be selected\n```java\nmtb.maxSelectedItems(2, max -\u003e toast(\"Can't select more than \" + max + \" items.\"));\n```\n#### Note\nif you call `maxSelectedItems`, no need to set `multipleChoice(true)`.\n\n## Scroll\nYou can scroll `MultiToggleButton` if the views are out of bounds\n```java\nmtb.setScrollable(true);\n```\n#### Note\nThe scroll is disabled by default.\n\n\n# Attributes:\n| Attribute name                    | Description                                                   |\n| ----------------|------------------------|\n|   labels |  Labels of each items in button\n|   mtbPressedColor | Color of pressed button\n|   mtbUnpressedColor  | Color of unpressed button\n|   mtbColorPressedText | Color of text for pressed button\n|   mtbColorUnpressedText | Color of text for un pressed button\n|   mtbCornerRadius | Corner radius\n|   mtbRoundedCorners | If true, the corners will be rounded. If corner radius is not set a default radius 18 will be set.\n|   mtbMultipleChoice | multiple items choice. The default is false.\n|   mtbScrollable | If true, items will be scrollable if it's out of screen bounds. The default is false\n|   mtbSelectFirstItem | If true, first item will be selected. The default is true.\n|   mtbTextAllCaps | All text caps.The default is true.\n\n\n### See 'app' module for the full code.\n\n# License\n\n## Apache license 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalekkamel%2Fandroid-multitoggle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmalekkamel%2Fandroid-multitoggle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmalekkamel%2Fandroid-multitoggle/lists"}