Warning! My final choice i.e. BelooS/ChipsLayoutManager is no longer maintained so I can’t recommend it anymore.

‘Chips’ is not widely known design element for Android, but I think it looks cool and can be very useful. Unfortunately, there is no built-in solution to do it, so I wanted to find some library that would help me with that.

For more info about chips, you can check out official guide on material design: Chips Component. But if you are not interested in design, feature image will be enough.

The best example of chips on Android is Gmail app. When you add recipients of your email, they show up in this nice way, with mail address and small picture. Every email address is clearly separated.

Email sample

I like that and I wanted to do similar thing in my own app, when I have a list of words. Those are keywords to be precise, so each is separate entity on its own. They don’t create a sentence and almost never there is an entity consisting of two words. There are many single words and chips - in my humble non-designer opinion - is a great way to show this.

At the beginning I wanted them exactly like Gmail - so that they are part of text input field. But after actually doing it, I found that adding items is not very intuitive and I went for just list of chips with floating action button that would add another keyword.

At first I was really disappointed. Googling and going through Android Arsenal gave me a lot of far-from-perfect or tighly coupled to some kind of implementation (contacts) libraries.

As a short introduction, I have to admit that I’m tired of abandoned libraries and fixing bugs on my own or relying on other forks. There is a time and place for this, but for such minor improvement in user experience it’s just not worth it. So I was quite finicky when doing research.

  • splitwise/TokenAutoComplete - many stars on github, but also A LOT of issues, some of them without any answer. Granted, author of the library created some plan for the future development in February, but apart from that, not much activity. Also it was clearly designed with autocomplete and contacts in mind, so seems like an overkill for me.

  • Plumillon/ChipView - first impression: last commit 7 months ago. But last real change: 2 years ago. Usage looks quite nice and not overcomplicated - it all just makes sense. Unfortunately that’s not enough to overcome lack of activity and popularity (which equals to lack of support, unfortunately). But if I wouldn’t find anything better…

  • klinker41/android-chips - wow, this one looks nice! Very easy to use, maintained, a lot of stars on Github. Where do I pay?! Unfortunately, it’s coupled with contacts/emails data so using other kind of data would be pain in the ass. That made me really sad.

  • DoodleScheduling/android-material-chips - similar to TokenAutoComplete, quite popular and was suggested in a few places I was looking for. Many stars and similarly, a lot of issues with almost no responses for them. And the most important issue with no response: Just wondering why it’s so tied to Contact data type

  • hootsuite/nachos - finally something really promising: Nachos! Very good documentation, cool ‘chip terminator’ idea, and even looks nice. There is even some article about its architecture (btw it was created by high school student? That’s very impressive). I gave it a try and practice was worse than theory… I didn’t find easy way to pre-populate chips with some given values. And it just didn’t work ‘as advertised’ - there were some small quirks with terminators which I found just in a minute of playing with it. Also the project is so young that I don’t know if there will be any support. For now I give it a pass - I hope it will be polished soon, because it looks promising. Good start.

Time for the best:

  • BelooS/ChipsLayoutManager - I love the idea: layout manager which can be applied to RecyclerView and applies some custom rules to its elements. ‘Chips’ is just the name though, there is no default view, you have to provide your own view for elements, but that’s minor drawback. The version 0.3.7 is a bit worrying, but it’s made up by good documentation and ease of use. Also a lot of Github stars is a good sign.

  • pchmn/MaterialChipsInput - This probably would be easy winner if I’d decided to have the chips inside input field. Good documentation, version over 1.0, a lot of stars, actively supported and (well designed) chips layout is ready to use. Implementing it is quite easy, the one thing to note is that you need to decide when user wants to make chip from input text. It can’t be done automatically like in Nachos. But that’s understandable - ubiquitous solution would be hard. What was dealbreaker in my case was (lack of) flexibility in chips view. I didn’t find any easy way to increase font size in chips, which I really needed.

Finally I chose ChipsLayoutManager. I want to write a few words about using it, but this post is long enough so see you in next one!

Honorable mention

For quick and easy one chip view you can use robertlevonyan/materialChipView. It’s a pity that text size is not configurable, but for example if you need circular image in your chip, this library is worth checking out.