# TextKeyListener

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Inherited Constants](https://developer.android.com/reference/android/text/method/TextKeyListener#inhconstants)\|[Ctors](https://developer.android.com/reference/android/text/method/TextKeyListener#pubctors)\|[Methods](https://developer.android.com/reference/android/text/method/TextKeyListener#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/text/method/TextKeyListener#inhmethods)  

# TextKeyListener

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/text/method/TextKeyListener "View this page in Kotlin")\|Java

`
public


class
TextKeyListener
`  
`


``


``

extends `[BaseKeyListener](https://developer.android.com/reference/android/text/method/BaseKeyListener)`


``


implements

`[SpanWatcher](https://developer.android.com/reference/android/text/SpanWatcher)`


`

|---|---|---|-------------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||||
| ↳ | [android.text.method.MetaKeyKeyListener](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener) |||
|   | ↳ | [android.text.method.BaseKeyListener](https://developer.android.com/reference/android/text/method/BaseKeyListener) ||
|   |   | ↳ | android.text.method.TextKeyListener |

<br />

*** ** * ** ***

This is the key listener for typing normal text. It delegates to other key listeners appropriate to the current keyboard and language.

<br />

As for all implementations of[KeyListener](https://developer.android.com/reference/android/text/method/KeyListener), this class is only concerned with hardware keyboards. Software input methods have no obligation to trigger the methods in this class.

<br />

## Summary

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ### Inherited constants                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| From class[android.text.method.MetaKeyKeyListener](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener) |-------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `int` | [META_ALT_LOCKED](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_ALT_LOCKED) Flag that indicates that the ALT key is locked.                | | `int` | [META_ALT_ON](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_ALT_ON) Flag that indicates that the ALT key is on.                            | | `int` | [META_CAP_LOCKED](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_CAP_LOCKED) Flag that indicates that the SHIFT key is locked in CAPS mode. | | `int` | [META_SHIFT_ON](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_SHIFT_ON) Flag that indicates that the SHIFT key is on.                      | | `int` | [META_SYM_LOCKED](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_SYM_LOCKED) Flag that indicates that the SYM key is locked.                | | `int` | [META_SYM_ON](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_SYM_ON) Flag that indicates that the SYM key is on.                            | |

|                                                                                                                                                                                                   ### Public constructors                                                                                                                                                                                                   ||
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[TextKeyListener](https://developer.android.com/reference/android/text/method/TextKeyListener#TextKeyListener(android.text.method.TextKeyListener.Capitalize,%20boolean))`(`[TextKeyListener.Capitalize](https://developer.android.com/reference/android/text/method/TextKeyListener.Capitalize)` cap, boolean autotext) ` Creates a new TextKeyListener with the specified capitalization and correction properties. |

|                                                                                                                                                                                                                                                                                                                         ### Public methods                                                                                                                                                                                                                                                                                                                          ||
|----------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` static void`                                                                                           | ` `[clear](https://developer.android.com/reference/android/text/method/TextKeyListener#clear(android.text.Editable))`(`[Editable](https://developer.android.com/reference/android/text/Editable)` e) ` Clear all the input state (autotext, autocap, multitap, undo) from the specified Editable, going beyond Editable.clear(), which just clears the text but not the input state.                                                                                                                                                                      |
| ` int`                                                                                                   | ` `[getInputType](https://developer.android.com/reference/android/text/method/TextKeyListener#getInputType())`() `                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ` static `[TextKeyListener](https://developer.android.com/reference/android/text/method/TextKeyListener) | ` `[getInstance](https://developer.android.com/reference/android/text/method/TextKeyListener#getInstance())`() ` Returns a new or existing instance with no automatic capitalization or correction.                                                                                                                                                                                                                                                                                                                                                       |
| ` static `[TextKeyListener](https://developer.android.com/reference/android/text/method/TextKeyListener) | ` `[getInstance](https://developer.android.com/reference/android/text/method/TextKeyListener#getInstance(boolean,%20android.text.method.TextKeyListener.Capitalize))`(boolean autotext, `[TextKeyListener.Capitalize](https://developer.android.com/reference/android/text/method/TextKeyListener.Capitalize)` cap) ` Returns a new or existing instance with the specified capitalization and correction properties.                                                                                                                                     |
| ` boolean`                                                                                               | ` `[onKeyDown](https://developer.android.com/reference/android/text/method/TextKeyListener#onKeyDown(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Handles presses of the meta keys.                                                                     |
| ` boolean`                                                                                               | ` `[onKeyOther](https://developer.android.com/reference/android/text/method/TextKeyListener#onKeyOther(android.view.View,%20android.text.Editable,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Base implementation handles ACTION_MULTIPLE KEYCODE_UNKNOWN by inserting the event's text into the content.             |
| ` boolean`                                                                                               | ` `[onKeyUp](https://developer.android.com/reference/android/text/method/TextKeyListener#onKeyUp(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Handles release of the meta keys.                                                                         |
| ` void`                                                                                                  | ` `[onSpanAdded](https://developer.android.com/reference/android/text/method/TextKeyListener#onSpanAdded(android.text.Spannable,%20java.lang.Object,%20int,%20int))`(`[Spannable](https://developer.android.com/reference/android/text/Spannable)` s, `[Object](https://developer.android.com/reference/java/lang/Object)` what, int start, int end) ` This method is called to notify you that the specified object has been attached to the specified range of the text.                                                                                |
| ` void`                                                                                                  | ` `[onSpanChanged](https://developer.android.com/reference/android/text/method/TextKeyListener#onSpanChanged(android.text.Spannable,%20java.lang.Object,%20int,%20int,%20int,%20int))`(`[Spannable](https://developer.android.com/reference/android/text/Spannable)` s, `[Object](https://developer.android.com/reference/java/lang/Object)` what, int start, int end, int st, int en) ` This method is called to notify you that the specified object has been relocated from the range`ostart...oend`to the new range`nstart...nend`of the text.        |
| ` void`                                                                                                  | ` `[onSpanRemoved](https://developer.android.com/reference/android/text/method/TextKeyListener#onSpanRemoved(android.text.Spannable,%20java.lang.Object,%20int,%20int))`(`[Spannable](https://developer.android.com/reference/android/text/Spannable)` s, `[Object](https://developer.android.com/reference/java/lang/Object)` what, int start, int end) ` This method is called to notify you that the specified object has been detached from the specified range of the text.                                                                          |
| ` void`                                                                                                  | ` `[release](https://developer.android.com/reference/android/text/method/TextKeyListener#release())`() `                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ` static boolean`                                                                                        | ` `[shouldCap](https://developer.android.com/reference/android/text/method/TextKeyListener#shouldCap(android.text.method.TextKeyListener.Capitalize,%20java.lang.CharSequence,%20int))`(`[TextKeyListener.Capitalize](https://developer.android.com/reference/android/text/method/TextKeyListener.Capitalize)` cap, `[CharSequence](https://developer.android.com/reference/java/lang/CharSequence)` cs, int off) ` Returns whether it makes sense to automatically capitalize at the specified position in the specified text, with the specified rules. |

| ### Inherited methods |
|-----------------------|---|
| From class` `[android.text.method.BaseKeyListener](https://developer.android.com/reference/android/text/method/BaseKeyListener)` ` |------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` boolean` | ` `[backspace](https://developer.android.com/reference/android/text/method/BaseKeyListener#backspace(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Performs the action that happens when you press the[KeyEvent.KEYCODE_DEL](https://developer.android.com/reference/android/view/KeyEvent#KEYCODE_DEL)key in a[TextView](https://developer.android.com/reference/android/widget/TextView).                         | | ` boolean` | ` `[forwardDelete](https://developer.android.com/reference/android/text/method/BaseKeyListener#forwardDelete(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Performs the action that happens when you press the[KeyEvent.KEYCODE_FORWARD_DEL](https://developer.android.com/reference/android/view/KeyEvent#KEYCODE_FORWARD_DEL)key in a[TextView](https://developer.android.com/reference/android/widget/TextView). | | ` boolean` | ` `[onKeyDown](https://developer.android.com/reference/android/text/method/BaseKeyListener#onKeyDown(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Handles presses of the meta keys.                                                                                                                                                                                                                                | | ` boolean` | ` `[onKeyOther](https://developer.android.com/reference/android/text/method/BaseKeyListener#onKeyOther(android.view.View,%20android.text.Editable,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Base implementation handles ACTION_MULTIPLE KEYCODE_UNKNOWN by inserting the event's text into the content.                                                                                                                                                                        | ||
| From class` `[android.text.method.MetaKeyKeyListener](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener)` ` |---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` static void`      | ` `[adjustMetaAfterKeypress](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#adjustMetaAfterKeypress(android.text.Spannable))`(`[Spannable](https://developer.android.com/reference/android/text/Spannable)` content) ` Call this method after you handle a keypress so that the meta state will be reset to unshifted (if it is not still down) or primed to be reset to unshifted (once it is released).                                                | | ` static long`      | ` `[adjustMetaAfterKeypress](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#adjustMetaAfterKeypress(long))`(long state) ` Call this method after you handle a keypress so that the meta state will be reset to unshifted (if it is not still down) or primed to be reset to unshifted (once it is released).                                                                                                                                             | | ` static void`      | ` `[clearMetaKeyState](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#clearMetaKeyState(android.text.Editable,%20int))`(`[Editable](https://developer.android.com/reference/android/text/Editable)` content, int states) `                                                                                                                                                                                                                               | | ` long`             | ` `[clearMetaKeyState](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#clearMetaKeyState(long,%20int))`(long state, int which) ` Clears the state of the specified meta key if it is locked.                                                                                                                                                                                                                                                              | | ` void`             | ` `[clearMetaKeyState](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#clearMetaKeyState(android.view.View,%20android.text.Editable,%20int))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, int states) `                                                                                                                                | | ` static final int` | ` `[getMetaState](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(java.lang.CharSequence))`(`[CharSequence](https://developer.android.com/reference/java/lang/CharSequence)` text) ` Gets the state of the meta keys.                                                                                                                                                                                                                        | | ` static final int` | ` `[getMetaState](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(java.lang.CharSequence,%20int))`(`[CharSequence](https://developer.android.com/reference/java/lang/CharSequence)` text, int meta) ` Gets the state of a particular meta key.                                                                                                                                                                                               | | ` static final int` | ` `[getMetaState](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(long))`(long state) ` Gets the state of the meta keys.                                                                                                                                                                                                                                                                                                                     | | ` static final int` | ` `[getMetaState](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(java.lang.CharSequence,%20android.view.KeyEvent))`(`[CharSequence](https://developer.android.com/reference/java/lang/CharSequence)` text, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Gets the state of the meta keys for a specific key event.                                                                                   | | ` static final int` | ` `[getMetaState](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(long,%20int))`(long state, int meta) ` Gets the state of a particular meta key.                                                                                                                                                                                                                                                                                            | | ` static final int` | ` `[getMetaState](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(java.lang.CharSequence,%20int,%20android.view.KeyEvent))`(`[CharSequence](https://developer.android.com/reference/java/lang/CharSequence)` text, int meta, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Gets the state of a particular meta key to use with a particular key event.                                                | | ` static long`      | ` `[handleKeyDown](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#handleKeyDown(long,%20int,%20android.view.KeyEvent))`(long state, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Handles presses of the meta keys.                                                                                                                                                                                  | | ` static long`      | ` `[handleKeyUp](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#handleKeyUp(long,%20int,%20android.view.KeyEvent))`(long state, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Handles release of the meta keys.                                                                                                                                                                                      | | ` static boolean`   | ` `[isMetaTracker](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#isMetaTracker(java.lang.CharSequence,%20java.lang.Object))`(`[CharSequence](https://developer.android.com/reference/java/lang/CharSequence)` text, `[Object](https://developer.android.com/reference/java/lang/Object)` what) ` Returns true if this object is one that this class would use to keep track of any meta state in the specified text.                                    | | ` static boolean`   | ` `[isSelectingMetaTracker](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#isSelectingMetaTracker(java.lang.CharSequence,%20java.lang.Object))`(`[CharSequence](https://developer.android.com/reference/java/lang/CharSequence)` text, `[Object](https://developer.android.com/reference/java/lang/Object)` what) ` Returns true if this object is one that this class would use to keep track of the selecting meta state in the specified text.        | | ` boolean`          | ` `[onKeyDown](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#onKeyDown(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Handles presses of the meta keys. | | ` boolean`          | ` `[onKeyUp](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#onKeyUp(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` Handles release of the meta keys.     | | ` static long`      | ` `[resetLockedMeta](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#resetLockedMeta(long))`(long state) ` Call this if you are a method that ignores the locked meta state (arrow keys, for example) and you handle a key.                                                                                                                                                                                                                               | | ` static void`      | ` `[resetLockedMeta](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#resetLockedMeta(android.text.Spannable))`(`[Spannable](https://developer.android.com/reference/android/text/Spannable)` content) ` Call this if you are a method that ignores the locked meta state (arrow keys, for example) and you handle a key.                                                                                                                                  | | ` static void`      | ` `[resetMetaState](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#resetMetaState(android.text.Spannable))`(`[Spannable](https://developer.android.com/reference/android/text/Spannable)` text) ` Resets all meta state to inactive.                                                                                                                                                                                                                     | ||
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                          | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long,%20int))`(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*, or until a certain amount of real time has elapsed.                   | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*.                                                                                             | ||
| From interface` `[android.text.method.KeyListener](https://developer.android.com/reference/android/text/method/KeyListener)` ` |---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void`    | ` `[clearMetaKeyState](https://developer.android.com/reference/android/text/method/KeyListener#clearMetaKeyState(android.view.View,%20android.text.Editable,%20int))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` content, int states) ` Remove the given shift states from the edited text.                                                                                                                                                                                        | | ` abstract int`     | ` `[getInputType](https://developer.android.com/reference/android/text/method/KeyListener#getInputType())`() ` Return the type of text that this key listener is manipulating, as per[InputType](https://developer.android.com/reference/android/text/InputType).                                                                                                                                                                                                                                                                                                                             | | ` abstract boolean` | ` `[onKeyDown](https://developer.android.com/reference/android/text/method/KeyListener#onKeyDown(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` text, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` If the key listener wants to handle this key, return true, otherwise return false and the caller (i.e. the widget host) will handle the key.     | | ` abstract boolean` | ` `[onKeyOther](https://developer.android.com/reference/android/text/method/KeyListener#onKeyOther(android.view.View,%20android.text.Editable,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` text, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` If the key listener wants to other kinds of key events, return true, otherwise return false and the caller (i.e. the widget host) will handle the key.             | | ` abstract boolean` | ` `[onKeyUp](https://developer.android.com/reference/android/text/method/KeyListener#onKeyUp(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent))`(`[View](https://developer.android.com/reference/android/view/View)` view, `[Editable](https://developer.android.com/reference/android/text/Editable)` text, int keyCode, `[KeyEvent](https://developer.android.com/reference/android/view/KeyEvent)` event) ` If the key listener wants to handle this key release, return true, otherwise return false and the caller (i.e. the widget host) will handle the key. | ||
| From interface` `[android.text.SpanWatcher](https://developer.android.com/reference/android/text/SpanWatcher)` ` |------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` abstract void` | ` `[onSpanAdded](https://developer.android.com/reference/android/text/SpanWatcher#onSpanAdded(android.text.Spannable,%20java.lang.Object,%20int,%20int))`(`[Spannable](https://developer.android.com/reference/android/text/Spannable)` text, `[Object](https://developer.android.com/reference/java/lang/Object)` what, int start, int end) ` This method is called to notify you that the specified object has been attached to the specified range of the text.                                                                                 | | ` abstract void` | ` `[onSpanChanged](https://developer.android.com/reference/android/text/SpanWatcher#onSpanChanged(android.text.Spannable,%20java.lang.Object,%20int,%20int,%20int,%20int))`(`[Spannable](https://developer.android.com/reference/android/text/Spannable)` text, `[Object](https://developer.android.com/reference/java/lang/Object)` what, int ostart, int oend, int nstart, int nend) ` This method is called to notify you that the specified object has been relocated from the range`ostart...oend`to the new range`nstart...nend`of the text. | | ` abstract void` | ` `[onSpanRemoved](https://developer.android.com/reference/android/text/SpanWatcher#onSpanRemoved(android.text.Spannable,%20java.lang.Object,%20int,%20int))`(`[Spannable](https://developer.android.com/reference/android/text/Spannable)` text, `[Object](https://developer.android.com/reference/java/lang/Object)` what, int start, int end) ` This method is called to notify you that the specified object has been detached from the specified range of the text.                                                                           | ||

## Public constructors

### TextKeyListener

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public TextKeyListener (TextKeyListener.Capitalize cap, 
                boolean autotext)
```

Creates a new TextKeyListener with the specified capitalization and correction properties.

<br />

|                                          Parameters                                          ||
|------------|----------------------------------------------------------------------------------|
| `cap`      | `TextKeyListener.Capitalize`: when, if ever, to automatically capitalize. <br /> |
| `autotext` | `boolean`: whether to automatically do spelling corrections. <br />              |

## Public methods

### clear

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static void clear (Editable e)
```

Clear all the input state (autotext, autocap, multitap, undo) from the specified Editable, going beyond Editable.clear(), which just clears the text but not the input state.

<br />

|                                 Parameters                                 ||
|-----|-----------------------------------------------------------------------|
| `e` | `Editable`: the buffer whose text and state are to be cleared. <br /> |

### getInputType

Added in[API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public int getInputType ()
```

<br />

<br />

|    Returns    ||
|-------|--------|
| `int` | <br /> |

### getInstance

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static TextKeyListener getInstance ()
```

Returns a new or existing instance with no automatic capitalization or correction.

<br />

|                                                Returns                                                 ||
|------------------------------------------------------------------------------------------------|--------|
| [TextKeyListener](https://developer.android.com/reference/android/text/method/TextKeyListener) | <br /> |

### getInstance

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static TextKeyListener getInstance (boolean autotext, 
                TextKeyListener.Capitalize cap)
```

Returns a new or existing instance with the specified capitalization and correction properties.

<br />

|                                          Parameters                                          ||
|------------|----------------------------------------------------------------------------------|
| `autotext` | `boolean`: whether to automatically do spelling corrections. <br />              |
| `cap`      | `TextKeyListener.Capitalize`: when, if ever, to automatically capitalize. <br /> |

|                                                Returns                                                 ||
|------------------------------------------------------------------------------------------------|--------|
| [TextKeyListener](https://developer.android.com/reference/android/text/method/TextKeyListener) | <br /> |

### onKeyDown

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public boolean onKeyDown (View view, 
                Editable content, 
                int keyCode, 
                KeyEvent event)
```

Handles presses of the meta keys.

<br />

|          Parameters          ||
|-----------|-------------------|
| `view`    | `View` <br />     |
| `content` | `Editable` <br /> |
| `keyCode` | `int` <br />      |
| `event`   | `KeyEvent` <br /> |

|      Returns      ||
|-----------|--------|
| `boolean` | <br /> |

### onKeyOther

Added in[API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public boolean onKeyOther (View view, 
                Editable content, 
                KeyEvent event)
```

Base implementation handles ACTION_MULTIPLE KEYCODE_UNKNOWN by inserting the event's text into the content.

<br />

|          Parameters          ||
|-----------|-------------------|
| `view`    | `View` <br />     |
| `content` | `Editable` <br /> |
| `event`   | `KeyEvent` <br /> |

|      Returns      ||
|-----------|--------|
| `boolean` | <br /> |

### onKeyUp

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public boolean onKeyUp (View view, 
                Editable content, 
                int keyCode, 
                KeyEvent event)
```

Handles release of the meta keys.

<br />

|          Parameters          ||
|-----------|-------------------|
| `view`    | `View` <br />     |
| `content` | `Editable` <br /> |
| `keyCode` | `int` <br />      |
| `event`   | `KeyEvent` <br /> |

|      Returns      ||
|-----------|--------|
| `boolean` | <br /> |

### onSpanAdded

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void onSpanAdded (Spannable s, 
                Object what, 
                int start, 
                int end)
```

This method is called to notify you that the specified object has been attached to the specified range of the text.

<br />

|         Parameters          ||
|---------|--------------------|
| `s`     | `Spannable` <br /> |
| `what`  | `Object` <br />    |
| `start` | `int` <br />       |
| `end`   | `int` <br />       |

### onSpanChanged

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void onSpanChanged (Spannable s, 
                Object what, 
                int start, 
                int end, 
                int st, 
                int en)
```

This method is called to notify you that the specified object has been relocated from the range`ostart...oend`to the new range`nstart...nend`of the text.

<br />

|         Parameters          ||
|---------|--------------------|
| `s`     | `Spannable` <br /> |
| `what`  | `Object` <br />    |
| `start` | `int` <br />       |
| `end`   | `int` <br />       |
| `st`    | `int` <br />       |
| `en`    | `int` <br />       |

### onSpanRemoved

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void onSpanRemoved (Spannable s, 
                Object what, 
                int start, 
                int end)
```

This method is called to notify you that the specified object has been detached from the specified range of the text.

<br />

|         Parameters          ||
|---------|--------------------|
| `s`     | `Spannable` <br /> |
| `what`  | `Object` <br />    |
| `start` | `int` <br />       |
| `end`   | `int` <br />       |

### release

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public void release ()
```

<br />

<br />

### shouldCap

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public static boolean shouldCap (TextKeyListener.Capitalize cap, 
                CharSequence cs, 
                int off)
```

Returns whether it makes sense to automatically capitalize at the specified position in the specified text, with the specified rules.

<br />

|                                    Parameters                                     ||
|-------|----------------------------------------------------------------------------|
| `cap` | `TextKeyListener.Capitalize`: the capitalization rules to consider. <br /> |
| `cs`  | `CharSequence`: the text in which an insertion is being made. <br />       |
| `off` | `int`: the offset into that text where the insertion is being made. <br /> |

|                                    Returns                                    ||
|-----------|--------------------------------------------------------------------|
| `boolean` | whether the character being inserted should be capitalized. <br /> |