Mentions

Circle CI codecov.io Codacy Badge

This library provides a simple and customizable away to setup @ mentions on any EditText. Here's all it takes to get started.

Usage Examples

We provide a builder through which you can setup different options for @ mentions. Here is an example:

EditText commentField = findViewById(activity, R.id.my_edit_text);

Mentions mentions = new Mentions.Builder(activity, commentField)
    .highlightColor(R.color.blue)
    .maxCharacters(5)
    .queryListener(new QueryListener() {
        void onQueryReceived(final String query) {
           // Get and display results for query.
        }
    })
    .suggestionsListener(new SuggestionsListener() {
        void displaySuggestions(final boolean display) {
          // Hint that can be used to show or hide your list of @ mentions".
        }
    })
    .build();

The library allows you to display suggestions as you see fit. Here is an example in the sample app Display Suggestions. When the user chooses a suggestion to @ mention, show it in the EditText view by:

final Mention mention = new Mention();
mention.setMentionName(user.getFullName());
mentions.insertMention(mention);

Inserting the mention will highlight it in the EditText view and the library will keep track of its offset. As the user types more text in the view, the library will update the offset and maintain the highlighting for you.

If you need to get the mentions currently shown in your EditText view (to send to your API or do further processing):

final List<Mentionable> mentions = mentions.getInsertedMentions();
for (Mentionable mention : mentions) {
    println("Position of 1st Character in EditText " + mention.getMentionOffset());
    println("Text " + mention.getMentionName())
    println("Length " + mention.getMentionLength());
}

Builder methods

highlightColor(int color)

maxCharacters(int maxCharacters)

suggestionsListener(SuggestionsListener suggestionsListener)

queryListener(QueryListener queryListener)

Adding to your application

Simply add Mentions as a gradle dependency. Distribution is done through jitpack.io.

See https://jitpack.io/com/github/percolate/mentions/ for instructions

Running Tests

The library contains unit tests written in Kotlin with Mockito and Robolectric.

To run the tests and generate a coverage, please execute the command

gradlew clean coverage

License

Open source. Distributed under the BSD 3 license. See LICENSE.txt for details.