# EmojiEditTextHelper

# 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)

*** ** * ** ***

Kotlin \|[Java](https://developer.android.com/reference/androidx/emoji/widget/EmojiEditTextHelper "View this page in Java")


```
class EmojiEditTextHelper
```

<br />

*** ** * ** ***

Utility class to enhance custom EditText widgets with [EmojiCompat](https://developer.android.com/reference/kotlin/androidx/emoji/text/EmojiCompat).  

```kotlin
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                                                                                                                              |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [EmojiEditTextHelper](https://developer.android.com/reference/kotlin/androidx/emoji/widget/EmojiEditTextHelper#EmojiEditTextHelper(android.widget.EditText))`(editText: `[EditText](https://developer.android.com/reference/android/widget/EditText.html)`)` Default constructor. |

|                                            ### Public functions                                             |
|-------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [KeyListener](https://developer.android.com/reference/android/text/method/KeyListener.html)                 | [getKeyListener](https://developer.android.com/reference/kotlin/androidx/emoji/widget/EmojiEditTextHelper#getKeyListener(android.text.method.KeyListener))`(keyListener: `[KeyListener](https://developer.android.com/reference/android/text/method/KeyListener.html)`)` Attaches EmojiCompat KeyListener to the widget.                                                                                                                                                                                                      |
| [Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)                                 | [getMaxEmojiCount](https://developer.android.com/reference/kotlin/androidx/emoji/widget/EmojiEditTextHelper#getMaxEmojiCount())`()` Returns the maximum number of EmojiSpans to be added to a CharSequence.                                                                                                                                                                                                                                                                                                                   |
| [InputConnection](https://developer.android.com/reference/android/view/inputmethod/InputConnection.html)`?` | [onCreateInputConnection](https://developer.android.com/reference/kotlin/androidx/emoji/widget/EmojiEditTextHelper#onCreateInputConnection(android.view.inputmethod.InputConnection,android.view.inputmethod.EditorInfo))`(` ` inputConnection: `[InputConnection](https://developer.android.com/reference/android/view/inputmethod/InputConnection.html)`?,` ` outAttrs: `[EditorInfo](https://developer.android.com/reference/android/view/inputmethod/EditorInfo.html) `)` Updates the InputConnection with emoji support. |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)                               | [setMaxEmojiCount](https://developer.android.com/reference/kotlin/androidx/emoji/widget/EmojiEditTextHelper#setMaxEmojiCount(int))`(maxEmojiCount: @`[IntRange](https://developer.android.com/reference/kotlin/androidx/annotation/IntRange)`(from = 0) `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`)` 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)  

```
EmojiEditTextHelper(editText: EditText)
```

Default constructor.  

|                                          Parameters                                          |
|----------------------------------------------------------------------------------------------|-------------------|
| `editText: `[EditText](https://developer.android.com/reference/android/widget/EditText.html) | EditText instance |

## Public functions

### getKeyListener

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

```
fun getKeyListener(keyListener: KeyListener): KeyListener
```

Attaches EmojiCompat KeyListener to the widget. Should be called from [setKeyListener](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                                                 |
|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `keyListener: `[KeyListener](https://developer.android.com/reference/android/text/method/KeyListener.html) | KeyListener passed into [setKeyListener](https://developer.android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener)) |

|                                           Returns                                           |
|---------------------------------------------------------------------------------------------|------------------------------------------------------|
| [KeyListener](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)  

```
fun getMaxEmojiCount(): Int
```

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

|                                                               See also                                                                |
|---------------------------------------------------------------------------------------------------------------------------------------|---|
| [setMaxEmojiCount](https://developer.android.com/reference/kotlin/androidx/emoji/widget/EmojiEditTextHelper#setMaxEmojiCount(int))    |   |
| [process](https://developer.android.com/reference/kotlin/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)  

```
fun onCreateInputConnection(
    inputConnection: InputConnection?,
    outAttrs: EditorInfo
): InputConnection?
```

Updates the InputConnection with emoji support. Should be called from [onCreateInputConnection](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                                                           |
|--------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `inputConnection: `[InputConnection](https://developer.android.com/reference/android/view/inputmethod/InputConnection.html)`?` | InputConnection instance created by TextView                                                                                                                                        |
| `outAttrs: `[EditorInfo](https://developer.android.com/reference/android/view/inputmethod/EditorInfo.html)                     | EditorInfo passed into [onCreateInputConnection](https://developer.android.com/reference/android/widget/TextView.html#onCreateInputConnection(android.view.inputmethod.EditorInfo)) |

|                                                   Returns                                                   |
|-------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------|
| [InputConnection](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)  

```
fun setMaxEmojiCount(maxEmojiCount: @IntRange(from = 0) Int): Unit
```

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                                                                                             |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
| `maxEmojiCount: @`[IntRange](https://developer.android.com/reference/kotlin/androidx/annotation/IntRange)`(from = 0) `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html) | maximum number of EmojiSpans to be added to a single CharSequence, should be equal or greater than 0 |

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