EmojiEditTextHelper

class EmojiEditTextHelper


Utility class to enhance custom EditText widgets with 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

Default constructor.

Public functions

KeyListener

Attaches EmojiCompat KeyListener to the widget.

Int

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

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

Updates the InputConnection with emoji support.

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

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

Public constructors

EmojiEditTextHelper

Added in 1.0.0
EmojiEditTextHelper(editText: EditText)

Default constructor.

Parameters
editText: EditText

EditText instance

Public functions

getKeyListener

Added in 1.0.0
fun getKeyListener(keyListener: KeyListener): KeyListener

Attaches EmojiCompat KeyListener to the widget. Should be called from setKeyListener. 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

KeyListener passed into setKeyListener

Returns
KeyListener

a new KeyListener instance that wraps keyListener.

getMaxEmojiCount

Added in 1.0.0
fun getMaxEmojiCount(): Int

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

onCreateInputConnection

Added in 1.0.0
fun onCreateInputConnection(
    inputConnection: InputConnection?,
    outAttrs: EditorInfo
): InputConnection?

Updates the InputConnection with emoji support. Should be called from onCreateInputConnection. 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?

InputConnection instance created by TextView

outAttrs: EditorInfo

EditorInfo passed into onCreateInputConnection

Returns
InputConnection?

a new InputConnection instance that wraps inputConnection

setMaxEmojiCount

Added in 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(from = 0) Int

maximum number of EmojiSpans to be added to a single CharSequence, should be equal or greater than 0

See also
process