# EmojiEditTextHelper

Artifact: [androidx.emoji:emoji](https://developer.android.com/jetpack/androidx/releases/emoji) [View Source](https://cs.android.com/search?q=file:androidx/emoji/widget/EmojiEditTextHelper.java+class:androidx.emoji.widget.EmojiEditTextHelper) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/emoji#1.0.0)

*** ** * ** ***


```
public final class EmojiEditTextHelper
```

<br />

*** ** * ** ***

Utility class to enhance custom EditText widgets with `https://developer.android.com/reference/androidx/emoji/text/EmojiCompat`.

```
public class MyEmojiEditText extends EditText {
     public MyEmojiEditText(Context context) {
         super(context);
         init();
     }
     // ...
     private void init() {
         super.setKeyListener(getEmojiEditTextHelper().getKeyListener(getKeyListener()));
     }

     @Override
     public void setKeyListener(android.text.method.KeyListener keyListener) {
         super.setKeyListener(getEmojiEditTextHelper().getKeyListener(keyListener));
     }

     @Override
     public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
         InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
         return getEmojiEditTextHelper().onCreateInputConnection(inputConnection, outAttrs);
     }

     private EmojiEditTextHelper getEmojiEditTextHelper() {
         if (mEmojiEditTextHelper == null) {
             mEmojiEditTextHelper = new EmojiEditTextHelper(this);
         }
         return mEmojiEditTextHelper;
     }
}
```

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/emoji/widget/EmojiEditTextHelper#EmojiEditTextHelper(android.widget.EditText)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/widget/EditText.html editText)` Default constructor. |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/text/method/KeyListener.html` | `https://developer.android.com/reference/androidx/emoji/widget/EmojiEditTextHelper#getKeyListener(android.text.method.KeyListener)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/text/method/KeyListener.html keyListener)` Attaches EmojiCompat KeyListener to the widget. |
| `int` | `https://developer.android.com/reference/androidx/emoji/widget/EmojiEditTextHelper#getMaxEmojiCount()()` Returns the maximum number of EmojiSpans to be added to a CharSequence. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/view/inputmethod/InputConnection.html` | `https://developer.android.com/reference/androidx/emoji/widget/EmojiEditTextHelper#onCreateInputConnection(android.view.inputmethod.InputConnection,android.view.inputmethod.EditorInfo)( @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/view/inputmethod/InputConnection.html inputConnection, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/view/inputmethod/EditorInfo.html outAttrs )` Updates the InputConnection with emoji support. |
| `void` | `https://developer.android.com/reference/androidx/emoji/widget/EmojiEditTextHelper#setMaxEmojiCount(int)(@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int maxEmojiCount)` Set the maximum number of EmojiSpans to be added to a CharSequence. |

## Public constructors

### EmojiEditTextHelper

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/emoji#1.0.0)

```
public EmojiEditTextHelper(@NonNull EditText editText)
```

Default constructor.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/widget/EditText.html editText` | EditText instance |

## Public methods

### getKeyListener

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/emoji#1.0.0)

```
public @NonNull KeyListener getKeyListener(@NonNull KeyListener keyListener)
```

Attaches EmojiCompat KeyListener to the widget. Should be called from `https://developer.android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener)`. Existing keyListener is wrapped into EmojiCompat KeyListener. When used on devices running API 18 or below, this method returns `keyListener` that is given as a parameter.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/text/method/KeyListener.html keyListener` | KeyListener passed into `https://developer.android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener)` |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/text/method/KeyListener.html` | a new KeyListener instance that wraps `keyListener`. |

### getMaxEmojiCount

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/emoji#1.0.0)

```
public int getMaxEmojiCount()
```

Returns the maximum number of EmojiSpans to be added to a CharSequence.

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/emoji/widget/EmojiEditTextHelper#setMaxEmojiCount(int)` |   |
| `https://developer.android.com/reference/androidx/emoji/text/EmojiCompat#process(java.lang.CharSequence,int,int,int)` |   |

### onCreateInputConnection

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/emoji#1.0.0)

```
public @Nullable InputConnection onCreateInputConnection(
    @Nullable InputConnection inputConnection,
    @NonNull EditorInfo outAttrs
)
```

Updates the InputConnection with emoji support. Should be called from `https://developer.android.com/reference/android/widget/TextView.html#onCreateInputConnection(android.view.inputmethod.EditorInfo)`. When used on devices running API 18 or below, this method returns `inputConnection` that is given as a parameter. If `inputConnection` is `null`, returns `null`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/view/inputmethod/InputConnection.html inputConnection` | InputConnection instance created by TextView |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/view/inputmethod/EditorInfo.html outAttrs` | EditorInfo passed into `https://developer.android.com/reference/android/widget/TextView.html#onCreateInputConnection(android.view.inputmethod.EditorInfo)` |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/view/inputmethod/InputConnection.html` | a new InputConnection instance that wraps `inputConnection` |

### setMaxEmojiCount

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/emoji#1.0.0)

```
public void setMaxEmojiCount(@IntRange(from = 0) int maxEmojiCount)
```

Set the maximum number of EmojiSpans to be added to a CharSequence. The number of spans in a CharSequence affects the performance of the EditText insert/delete operations. Insert/delete operations slow down as the number of spans increases.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0) int maxEmojiCount` | maximum number of EmojiSpans to be added to a single CharSequence, should be equal or greater than 0 |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/emoji/text/EmojiCompat#process(java.lang.CharSequence,int,int,int)` |   |