# Projects

> Open source Android libraries by Kyle Mallette, including FABulous, ListBoost, MultiChoiceExpandableList, and RichEditText.

Author: Kyle Mallette · Canonical: https://www.kylemallette.com/projects.html · License: text CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/), code MIT. Credit Kyle Mallette and link the canonical URL.

## Android Open Source

[![FABulous Icon - A Floating Action Button with the Android bot in the middle](https://www.kylemallette.com/images/project-icons/FABulous/FABulous.png) ](https://github.com/kemallette/FABulous "FABulous Github Repo")

### [FABulous](https://github.com/kemallette/FABulous "FABulous Github Repo")

FABulous is a Floating Action Button implementation which is compatible from API 7 (Android 2.1) forward. Depedencies include the [Android support libraries v4 and v7](https://developer.android.com/tools/support-library/setup.html "Developer.Android.com Support Library Setup") and [NineOldAndroids](https://github.com/JakeWharton/NineOldAndroids "Jake Whartons NineOldAndroids Github Repo") - an Android library for using the Honeycomb animation API on all versions of the platform back to 1.0.

#### Features

- Allows for any view to become a FAB (ImageView is what I've used in the project, but you can subclass and use most views)
- FAB can respond to scrolling of any subclass of AbsListView (includes ListView and ExpandableListView) by showing/hiding itself with a smooth translate animation.

[![ListBoost Icon - A rocket blasting off](https://www.kylemallette.com/images/project-icons/ListBoost/list-boost.png) ](https://github.com/kemallette/ListBoost "List Boost Github Repo")

### [List Boost (v0.2.0)](https://github.com/kemallette/ListBoost "List Boost Github Repo")

The aim for ListBoost is to implement some much needed new functionality as well as to add conveniences where possible without requiring users to implement complicated wrappers or extra boilerplate.

#### Major Features Roadmap
**ExpandableListView**
- Sliding list item menus
- Swipe-to-reveal menus
- Drag and Drop
- MultiChoice Modes (Implemented)

**ListView**
- Sliding list item menus
- Swipe-to-reveal menus
- Drag and Drop

[![ListExperiments Icon - A robot arm pouring liquid from a test tube in to a beaker](https://www.kylemallette.com/images/project-icons/ListExperiments/list-experiments.png) ](https://github.com/kemallette/ListExperiments "List Experiments Github Repo")

### [List Experiments](https://github.com/kemallette/ListExperiments "List Experiments Github Repo")

This is were I keep the sample projects mentioned in my posts and other list experiments of my own.

#### Samples Projects in this Repo
**Refreshing ExpandableListView and ListView Items**
- Change a ListView's item text and background colors based on user input
- Change an ExpandableListView's child and parent item text and background colors based on user input

[![MultiChoiceExpandableList Icon - A screenshot segment of the list in action](https://www.kylemallette.com/images/project-icons/MultiChoiceExpandableList/multi-choice-expandable-list.png) ](https://github.com/kemallette/MultiChoiceExpandableList "Multi-Choice ExpandableList Github Repo")

### [MultiChoiceExpandableList](https://github.com/kemallette/MultiChoiceExpandableList "Multi-Choice ExpandableList Github Repo")

This has been rolled in to ListBoost (featured above). This adds support for choice modes present in ListView along with a few more.

#### Choice Modes
**Group Items (also called parent items)**
- No group choices
- Only one group at a time
- Multiple group choices

**Child Items**
- No child choices
- Only one child in the entire list
- Only one child per group

**Both Group and Child Items**
- Only one item (including both group and child items) for the entire list

[![RichEditText Icon](https://www.kylemallette.com/images/project-icons/android-folder.png) ](https://github.com/kemallette/RichEditText "Rich Edit Text Github Repo")

### [Rich Edit Text (buggy)](https://github.com/kemallette/RichEditText "Rich Edit Text Github Repo")

This is a custom EditText library project which adds text formatting, validations and dynamic text formatting. Also included is a ColorPicker widget which is conveniently separated in to it's own package.

#### Features
**Text formatting**
- bold
- italic
- underline
- strikethrough
- subscript
- background color
- foreground color

_TODO: Paragraph formatting options such as ordered and unordered lists, tabs, left/right/center/justify, etc._

**Validations**
- regexp: for custom regexp
- numeric: for an only numeric field
- alpha: for an alpha only field
- alphaNumeric: guess what?
- email: checks that the field is a valid email
- creditCard: checks that the field contains a valid credit card using Luhn Algorithm
- phone: checks that the field contains a valid phone number
- domainName: checks that field contains a valid domain name
- ipAddress: checks that the field contains a valid ip address
- webUrl: checks that the field contains a valid url
- nocheck: It does not check anything except the emptyness of the field.

**Custom Fonts**
- .TTF and .OTF supported. Android doesn't support other font formats.

* * *

Special thanks to [The Noun Project](https://thenounproject.com/) for being a kickass site and the following for allowing busy devs like me to use their works.

- Experiment by Icons Pusher from The Noun Project
- Rocket by Chris Kerr from The Noun Project

 © 2013–2026 Kyle Mallette. Writing is [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code is MIT. [Reuse and credit](https://www.kylemallette.com/license/)
