Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


A TagView library for Android. Customize your own & Drag effect.

Subscribe to updates I use AndroidTagView

Statistics on AndroidTagView

Number of watchers on Github 994
Number of open issues 36
Average time to close an issue 9 days
Main language Java
Average time to merge a PR about 20 hours
Open pull requests 0+
Closed pull requests 1+
Last commit over 2 years ago
Repo Created about 4 years ago
Repo Last Updated almost 2 years ago
Size 11.9 MB
Organization / Authorwhilu
Latest Releasev1.1.4
Page Updated
Do you use AndroidTagView? Leave a review!
View open issues (36)
View AndroidTagView activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating AndroidTagView for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Build Status Android Arsenal

An Android TagView library. You can customize awesome TagView by using this library.


androidtagview_record_1.gif device-2016-11-09-223523.png


Step 1

Add below dependency in your build.gradle file.

dependencies {
    compile 'co.lujun:androidtagview:1.1.4'

Step 2

Use the AndroidTagView in layout file, you can add customized attributes here.

    app:tag_theme="pure_teal" />

Step 3

Use TagView in your code.

TagContainerLayout mTagContainerLayout = (TagContainerLayout) findViewById(;
mTagContainerLayout.setTags(List<String> tags);

Now, you have successfully created some TagViews. The following will show some more useful features for you customize.


name format description
vertical_interval dimension Vertical interval, default 5(dp)
horizontal_interval dimension Horizontal interval, default 5(dp)
container_border_width dimension TagContainerLayout border width(default 0.5dp)
container_border_radius dimension TagContainerLayout border radius(default 10.0dp)
container_border_color color TagContainerLayout border color(default #22FF0000)
container_background_color color TagContainerLayout background color(default #11FF0000)
container_enable_drag boolean Can drag TagView(default false)
container_drag_sensitivity float The sensitive of the ViewDragHelper(default 1.0f, normal)
container_gravity enum The TagContainerLayout gravity
container_max_lines integer The max lines for TagContainerLayout(default 0, auto increase)
tag_border_width dimension TagView Border width(default 0.5dp)
tag_corner_radius dimension TagView Border radius(default 15.0dp)
tag_horizontal_padding dimension Horizontal padding for TagView, include left and right padding(left and right padding are equal, default 10dp)
tag_vertical_padding dimension Vertical padding for TagView, include top and bottom padding(top and bottom padding are equal, default 8dp)
tag_text_size dimension TagView Text size(default 14sp)
tag_bd_distance dimension The distance between baseline and descent(default 2.75dp)
tag_text_color color TagView text color(default #FF666666)
tag_border_color color TagView border color(default #88F44336)
tag_background_color color TagView background color(default #33F44336)
tag_max_length integer The max length for TagView(default max length 23)
tag_clickable boolean Whether TagView can clickable(default unclickable)
tag_theme enum The TagView theme
tag_text_direction enum The TagView text direction
tag_ripple_color color The ripple effect color(default #EEEEEE)
tag_ripple_alpha integer The ripple effect color alpha(the value may between 0 - 255, default 128)
tag_ripple_duration integer The ripple effect duration(In milliseconds, default 1000ms)
tag_enable_cross boolean Enable draw cross icon(default false)
tag_cross_width dimension The cross area width(your cross click area, default equal to the TagView's height)
tag_cross_color color The cross icon color(default Color.BLACK)
tag_cross_line_width dimension The cross line width(default 1dp)
tag_cross_area_padding dimension The padding of the cross area(default 10dp)
tag_support_letters_rlt boolean Whether to support 'letters show with RTL(eg: Android -> diordnA)' style(default false)
tag_background reference TagView background resource(default none background)

You can set these attributes in layout file, or use setters(each attribute has get and set method) to set them.


theme code value description
none ColorFactory.NONE -1 If you customize TagView with your way, set this theme
random ColorFactory.RANDOM 0 Create each TagView using random color
pure_cyan ColorFactory.PURE_CYAN 1 All TagView created by pure cyan color
pure_teal ColorFactory.PURE_TEAL 2 All TagView created by pure teal color


direction code value description
ltr View.TEXT_DIRECTION_LTR 3 Text direction is forced to LTR(default)
rtl View.TEXT_DIRECTION_RTL 4 Text direction is forced to RTL


gravity code value description
left Gravity.LEFT 3 Push TagView to the left of TagContainerLayout(default)
center Gravity.CENTER 17 Push TagView to the center of TagContainerLayout
right Gravity.RIGHT 5 Push TagView to the right of TagContainerLayout


  • Set a TagView.OnTagClickListener for TagView, for onTagClick , onTagLongClick and onTagCrossClick callback

    mTagContainerLayout.setOnTagClickListener(new TagView.OnTagClickListener() {
    public void onTagClick(int position, String text) {
        // ...
    public void onTagLongClick(final int position, String text) {
        // ...
    public void onTagCrossClick(int position) {
        // ...
  • Use setTagMaxLength(int max) to set text max length for all TagView.

    mTagContainerLayout.setTagMaxLength(int max);
  • Use getTagText(int position) to get TagView text at the specified location.

    String text = mTagContainerLayout.getTagText(int position);
  • getTags() return a string list for all tags in TagContainerLayout.

    List<String> list = mTagContainerLayout.getTags();
  • If you set the attribute container_enable_drag to true, when drag the TagView you can get latest state by using getTagViewState(). There are 4 state:ViewDragHelper.STATE_IDLE, ViewDragHelper.STATE_DRAGGING, and ViewDragHelper.STATE_SETTLING.

    int state = mTagContainerLayout.getTagViewState();
  • Set the theme. If you want to customize theme, remember set theme with ColorFactory.NONE first, then set other attributes.

    // Set library provides theme
    // Set customize theme
  • Set the text direction. The library support two direction View.TEXT_DIRECTION_LTR and View.TEXT_DIRECTION_RTL.

  • Use setTagTypeface(Typeface typeface) to set TagView text typeface.

    Typeface typeface = Typeface.createFromAsset(getAssets(), "iran_sans.ttf");

After set the attributes, set tags or add a tag.

  • Use setTags() to set tags, require a parameter of type List<String> or String[]. java mTagContainerLayout.setTags(List<String> tags);
  • Insert a TagView into ContainerLayout at the end. java mTagContainerLayout.addTag(String text);
  • Insert a TagView into ContainerLayout at the specified location, the TagView is inserted before the current element at the specified location. java mTagContainerLayout.addTag(String text, int position);
  • Remove TagView on particular position, require the position of the TagView. java mTagContainerLayout.removeTag(int position);
  • Remove all TagViews. java mTagContainerLayout.removeAllTags();
  • Get a TagView in specified position. java mTagContainerLayout.getTagView(int position);
  • Set color for each TagView. java List<int[]> colors = new ArrayList<int[]>(); //int[] color = {TagBackgroundColor, TabBorderColor, TagTextColor} int[] color1 = {Color.RED, Color.BLACK, Color.WHITE}; int[] color2 = {Color.BLUE, Color.BLACK, Color.WHITE}; colors.add(color1); colors.add(color2); mTagcontainerLayout.setTags(tags, colors);

Change logs


  • Add attribute for TagView background.


  • Add getTagView(int position) method to get TagView in specified position.


  • Fix bugs


  • Customize the color of the TagView, see #51
  • Fixed issue #50, #49


  • Fixed issue #45
  • Support 'letters show with RTL(eg: Android -> diordnA)' style


  • Fix bugs


  • Add cross view for TagView



  • Add getTags() method to get the list for all tags
  • Fixed bugs in ListView/RecyclerView


  • Support gravity for TagContainerLayout
  • Support set typeface


  • Support text direction
  • Add removeAllTags() method for remove all TagViews
  • Fixed issue #1
  • Fixed other bugs


  • First release

Sample App



If you have any questions, contact me:


Copyright 2015 lujun

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
AndroidTagView open issues Ask a question     (View All Issues)
  • over 3 years sometimes click on tags not recognized!
  • over 3 years How to set highlighted of Selected tag Theme
  • over 3 years How to set container_max_lines? couldn't find it. help!
  • over 3 years TagView截获了父布局的点击事件
  • over 3 years java.lang.ArrayIndexOutOfBoundsException: on TagContainerLayout.onInterceptTouchEvent
  • over 3 years Fatal Exception: java.lang.NullPointerException Attempt to invoke virtual method 'int co.lujun.androidtagview.TagContainerLayout.getTagViewState()' on a null object reference
  • over 3 years 拖拽时重新排列的动画有点生硬,可否顺滑一点😁
  • over 3 years 三星手机不能点击
  • over 3 years Changing Properties of a tag on click
  • over 3 years 在ListView的Item里面,ListView的OnItemClick事件处理
  • over 3 years 可以添加针对于某个tag的属性设置么
  • over 3 years How can I get tag text to wrap when it is longer than the width of container
  • over 3 years use in item of RecyclerView
  • over 3 years tag text issue
  • almost 4 years Selected state for TagView
  • about 4 years Delete Tags
  • about 4 years View cover problem
  • about 4 years enhancement support
AndroidTagView list of languages used
More projects by whilu View all
Other projects in Java