Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Methods](https://developer.android.com/reference/android/text/method/MovementMethod#pubmethods)

# MovementMethod

*** ** * ** ***


`
public


interface
MovementMethod
`


`


`

|---|
| android.text.method.MovementMethod |

|---|
| Known indirect subclasses [ArrowKeyMovementMethod](https://developer.android.com/reference/android/text/method/ArrowKeyMovementMethod), [BaseMovementMethod](https://developer.android.com/reference/android/text/method/BaseMovementMethod), [LinkMovementMethod](https://developer.android.com/reference/android/text/method/LinkMovementMethod), [ScrollingMovementMethod](https://developer.android.com/reference/android/text/method/ScrollingMovementMethod) |---|---| | [ArrowKeyMovementMethod](https://developer.android.com/reference/android/text/method/ArrowKeyMovementMethod) | A movement method that provides cursor movement and selection. | | [BaseMovementMethod](https://developer.android.com/reference/android/text/method/BaseMovementMethod) | Base classes for movement methods. | | [LinkMovementMethod](https://developer.android.com/reference/android/text/method/LinkMovementMethod) | A movement method that traverses links in the text buffer and scrolls if necessary. | | [ScrollingMovementMethod](https://developer.android.com/reference/android/text/method/ScrollingMovementMethod) | A movement method that interprets movement keys by scrolling the text buffer. | |

<br />

*** ** * ** ***

Provides cursor positioning, scrolling and text selection functionality in a `https://developer.android.com/reference/android/widget/TextView`.


The `https://developer.android.com/reference/android/widget/TextView` delegates handling of key events, trackball motions and touches to
the movement method for purposes of content navigation. The framework automatically
selects an appropriate movement method based on the content of the `https://developer.android.com/reference/android/widget/TextView`.


This interface is intended for use by the framework; it should not be implemented
directly by applications.

<br />

## Summary

| ### Public methods ||
|---|---|
| ` abstract boolean` | ` https://developer.android.com/reference/android/text/method/MovementMethod#canSelectArbitrarily()() ` Returns true if this movement method allows arbitrary selection of any text; false if it has no selection (like a movement method that only scrolls) or a constrained selection (for example limited to links. |
| ` abstract void` | ` https://developer.android.com/reference/android/text/method/MovementMethod#initialize(android.widget.TextView,%20android.text.Spannable)(https://developer.android.com/reference/android/widget/TextView widget, https://developer.android.com/reference/android/text/Spannable text) ` |
| ` abstract boolean` | ` https://developer.android.com/reference/android/text/method/MovementMethod#onGenericMotionEvent(android.widget.TextView,%20android.text.Spannable,%20android.view.MotionEvent)(https://developer.android.com/reference/android/widget/TextView widget, https://developer.android.com/reference/android/text/Spannable text, https://developer.android.com/reference/android/view/MotionEvent event) ` |
| ` abstract boolean` | ` https://developer.android.com/reference/android/text/method/MovementMethod#onKeyDown(android.widget.TextView,%20android.text.Spannable,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/android/widget/TextView widget, https://developer.android.com/reference/android/text/Spannable text, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` |
| ` abstract boolean` | ` https://developer.android.com/reference/android/text/method/MovementMethod#onKeyOther(android.widget.TextView,%20android.text.Spannable,%20android.view.KeyEvent)(https://developer.android.com/reference/android/widget/TextView view, https://developer.android.com/reference/android/text/Spannable text, 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. |
| ` abstract boolean` | ` https://developer.android.com/reference/android/text/method/MovementMethod#onKeyUp(android.widget.TextView,%20android.text.Spannable,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/android/widget/TextView widget, https://developer.android.com/reference/android/text/Spannable text, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` |
| ` abstract void` | ` https://developer.android.com/reference/android/text/method/MovementMethod#onTakeFocus(android.widget.TextView,%20android.text.Spannable,%20int)(https://developer.android.com/reference/android/widget/TextView widget, https://developer.android.com/reference/android/text/Spannable text, int direction) ` |
| ` abstract boolean` | ` https://developer.android.com/reference/android/text/method/MovementMethod#onTouchEvent(android.widget.TextView,%20android.text.Spannable,%20android.view.MotionEvent)(https://developer.android.com/reference/android/widget/TextView widget, https://developer.android.com/reference/android/text/Spannable text, https://developer.android.com/reference/android/view/MotionEvent event) ` |
| ` abstract boolean` | ` https://developer.android.com/reference/android/text/method/MovementMethod#onTrackballEvent(android.widget.TextView,%20android.text.Spannable,%20android.view.MotionEvent)(https://developer.android.com/reference/android/widget/TextView widget, https://developer.android.com/reference/android/text/Spannable text, https://developer.android.com/reference/android/view/MotionEvent event) ` |

## Public methods

### canSelectArbitrarily

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

```
public abstract boolean canSelectArbitrarily ()
```

Returns true if this movement method allows arbitrary selection
of any text; false if it has no selection (like a movement method
that only scrolls) or a constrained selection (for example
limited to links. The "Select All" menu item is disabled
if arbitrary selection is not allowed.

<br />

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

### initialize

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

```
public abstract void initialize (TextView widget, 
                Spannable text)
```

<br />

<br />

| Parameters ||
|---|---|
| `widget` | `TextView` <br /> |
| `text` | `Spannable` <br /> |

### onGenericMotionEvent

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

```
public abstract boolean onGenericMotionEvent (TextView widget, 
                Spannable text, 
                MotionEvent event)
```

<br />

<br />

| Parameters ||
|---|---|
| `widget` | `TextView` <br /> |
| `text` | `Spannable` <br /> |
| `event` | `MotionEvent` <br /> |

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

### onKeyDown

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

```
public abstract boolean onKeyDown (TextView widget, 
                Spannable text, 
                int keyCode, 
                KeyEvent event)
```

<br />

<br />

| Parameters ||
|---|---|
| `widget` | `TextView` <br /> |
| `text` | `Spannable` <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 abstract boolean onKeyOther (TextView view, 
                Spannable text, 
                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.

<br />

| Parameters ||
|---|---|
| `view` | `TextView` <br /> |
| `text` | `Spannable` <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 abstract boolean onKeyUp (TextView widget, 
                Spannable text, 
                int keyCode, 
                KeyEvent event)
```

<br />

<br />

| Parameters ||
|---|---|
| `widget` | `TextView` <br /> |
| `text` | `Spannable` <br /> |
| `keyCode` | `int` <br /> |
| `event` | `KeyEvent` <br /> |

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

### onTakeFocus

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

```
public abstract void onTakeFocus (TextView widget, 
                Spannable text, 
                int direction)
```

<br />

<br />

| Parameters ||
|---|---|
| `widget` | `TextView` <br /> |
| `text` | `Spannable` <br /> |
| `direction` | `int` <br /> |

### onTouchEvent

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

```
public abstract boolean onTouchEvent (TextView widget, 
                Spannable text, 
                MotionEvent event)
```

<br />

<br />

| Parameters ||
|---|---|
| `widget` | `TextView` <br /> |
| `text` | `Spannable` <br /> |
| `event` | `MotionEvent` <br /> |

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

### onTrackballEvent

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

```
public abstract boolean onTrackballEvent (TextView widget, 
                Spannable text, 
                MotionEvent event)
```

<br />

<br />

| Parameters ||
|---|---|
| `widget` | `TextView` <br /> |
| `text` | `Spannable` <br /> |
| `event` | `MotionEvent` <br /> |

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