1e41f4b71Sopenharmony_ci# Text Input (TextInput/TextArea)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ciThe **TextInput** and **TextArea** components are input components typically used to accept input from the user, such as comments, chat messages, and table content. They can be used in combination with other components to meet more diversified purposes, for example, login and registration. For details, see [TextInput](../reference/apis-arkui/arkui-ts/ts-basic-components-textinput.md) and [TextArea](../reference/apis-arkui/arkui-ts/ts-basic-components-textarea.md).
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci## Creating a Text Box
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ciThe **TextInput** component provides single-line text input, while the **TextArea** component provides multi-line text input. To create these components, use the following APIs:
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci```ts
12e41f4b71Sopenharmony_ciTextInput(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextInputController})
13e41f4b71Sopenharmony_ci```
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci```ts
16e41f4b71Sopenharmony_ciTextArea(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextAreaController})
17e41f4b71Sopenharmony_ci```
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci- Single-line text box
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci  ```ts
22e41f4b71Sopenharmony_ci  TextInput()
23e41f4b71Sopenharmony_ci  ```
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci  ![en-us_image_0000001511580844](figures/en-us_image_0000001511580844.png)
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci- Multi-line text box
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci  ```ts
31e41f4b71Sopenharmony_ci  TextArea()
32e41f4b71Sopenharmony_ci  ```
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci  ![en-us_image_0000001562940481](figures/en-us_image_0000001562940481.png)
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci  The **TextArea** component automatically wraps text so that each line does not have more than the width of the component.
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci  ```ts
40e41f4b71Sopenharmony_ci  TextArea({text:"I am TextArea I am TextArea I am TextArea"}).width(300)
41e41f4b71Sopenharmony_ci  ```
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci  ![en-us_image_0000001511580836](figures/en-us_image_0000001511580836.png)
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci
46e41f4b71Sopenharmony_ci## Setting the Input Box Type
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ciThe **TextInput** component comes in nine types. You can specify its type by setting the **type** parameter to any of the following: **Normal**, **Password**, **Email**, **Number**, **PhoneNumber**, **USER_NAME**, **NEW_PASSWORD**, **NUMBER_PASSWORD**,<!--Del--> **SCREEN_LOCK_PASSWORD**,<!--DelEnd--> and **NUMBER_DECIMAL**.
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci- Normal type (default type)
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ci  ```ts
54e41f4b71Sopenharmony_ci  TextInput()
55e41f4b71Sopenharmony_ci    .type(InputType.Normal)
56e41f4b71Sopenharmony_ci  ```
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci  ![en-us_image_0000001562820765](figures/en-us_image_0000001562820765.png)
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci- Password type
61e41f4b71Sopenharmony_ci
62e41f4b71Sopenharmony_ci  ```ts
63e41f4b71Sopenharmony_ci  TextInput()
64e41f4b71Sopenharmony_ci    .type(InputType.Password)
65e41f4b71Sopenharmony_ci  ```
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci  ![en-us_image_0000001511580840](figures/en-us_image_0000001511580840.png)
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci## Setting Styles
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci- Set the placeholder text displayed when there is no input.
73e41f4b71Sopenharmony_ci  TextInput({placeholder:'I am placeholder text'})
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci  ```ts
77e41f4b71Sopenharmony_ci  TextInput({placeholder:'I am placeholder text'})
78e41f4b71Sopenharmony_ci  ```
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ci  ![en-us_image_0000001511900400](figures/en-us_image_0000001511900400.png)
81e41f4b71Sopenharmony_ci
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ci- Set the current text input.
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci  ```ts
86e41f4b71Sopenharmony_ci  TextInput({placeholder:'I am placeholder text',text:'I am current text input'})
87e41f4b71Sopenharmony_ci  ```
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci  ![en-us_image_0000001562820761](figures/en-us_image_0000001562820761.png)
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci- Use **backgroundColor** to set the background color of the text box.
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci  ```ts
94e41f4b71Sopenharmony_ci  TextInput({placeholder:'I am placeholder text',text:'I am current text input'})
95e41f4b71Sopenharmony_ci    .backgroundColor(Color.Pink)
96e41f4b71Sopenharmony_ci  ```
97e41f4b71Sopenharmony_ci
98e41f4b71Sopenharmony_ci  ![en-us_image_0000001511740444](figures/en-us_image_0000001511740444.png)
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ci  More styles can be implemented by leveraging the [universal attributes](../reference/apis-arkui/arkui-ts/ts-universal-attributes-size.md).
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci## Adding Events
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ciYou can add the **onChange** event for the text box to obtain its content changes. You can also add the universal events to implement user interactions.
106e41f4b71Sopenharmony_ci
107e41f4b71Sopenharmony_ci```ts
108e41f4b71Sopenharmony_ciTextInput()
109e41f4b71Sopenharmony_ci  .onChange((value: string) => {
110e41f4b71Sopenharmony_ci    console.info(value);
111e41f4b71Sopenharmony_ci  })
112e41f4b71Sopenharmony_ci  .onFocus(() => {
113e41f4b71Sopenharmony_ci    console.info ('Get Focus');
114e41f4b71Sopenharmony_ci  })
115e41f4b71Sopenharmony_ci```
116e41f4b71Sopenharmony_ci
117e41f4b71Sopenharmony_ci## Example Scenario
118e41f4b71Sopenharmony_ci
119e41f4b71Sopenharmony_ciIn this example, the text box is used to submit forms on the user login or registration page.
120e41f4b71Sopenharmony_ci
121e41f4b71Sopenharmony_ci```ts
122e41f4b71Sopenharmony_ci@Entry
123e41f4b71Sopenharmony_ci@Component
124e41f4b71Sopenharmony_cistruct TextInputSample {
125e41f4b71Sopenharmony_ci  build() {
126e41f4b71Sopenharmony_ci    Column() {
127e41f4b71Sopenharmony_ci      TextInput({ placeholder: 'input your username' }).margin({ top: 20 })
128e41f4b71Sopenharmony_ci        .onSubmit((EnterKeyType)=>{
129e41f4b71Sopenharmony_ci          console.info(EnterKeyType+'Enter key type')
130e41f4b71Sopenharmony_ci        })
131e41f4b71Sopenharmony_ci      TextInput({ placeholder: 'input your password' }).type(InputType.Password).margin({ top: 20 })
132e41f4b71Sopenharmony_ci        .onSubmit((EnterKeyType)=>{
133e41f4b71Sopenharmony_ci          console.info(EnterKeyType+'Enter key type')
134e41f4b71Sopenharmony_ci        })
135e41f4b71Sopenharmony_ci      Button('Sign in').width(150).margin({ top: 20 })
136e41f4b71Sopenharmony_ci    }.padding(20)
137e41f4b71Sopenharmony_ci  }
138e41f4b71Sopenharmony_ci}
139e41f4b71Sopenharmony_ci```
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ci![textinput](figures/textinput.gif)
142e41f4b71Sopenharmony_ci
143e41f4b71Sopenharmony_ci## Keyboard Avoidance
144e41f4b71Sopenharmony_ci
145e41f4b71Sopenharmony_ciAfter the keyboard is raised, scrollable container components will only activate the keyboard avoidance feature when switching between landscape and portrait modes. To enable keyboard avoidance for non-scrollable container components, nest them within a scrollable container component, such as [Scroll](../reference/apis-arkui/arkui-ts/ts-container-scroll.md), [List](../reference/apis-arkui/arkui-ts/ts-container-list.md), or [Grid](../reference/apis-arkui/arkui-ts/ts-container-grid.md).
146e41f4b71Sopenharmony_ci
147e41f4b71Sopenharmony_ci```ts
148e41f4b71Sopenharmony_ci// xxx.ets
149e41f4b71Sopenharmony_ci@Entry
150e41f4b71Sopenharmony_ci@Component
151e41f4b71Sopenharmony_cistruct Index {
152e41f4b71Sopenharmony_ci  placeHolderArr: string[] = ['1', '2', '3', '4', '5', '6', '7']
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci  build() {
155e41f4b71Sopenharmony_ci    Scroll() {
156e41f4b71Sopenharmony_ci      Column() {
157e41f4b71Sopenharmony_ci        ForEach(this.placeHolderArr, (placeholder: string) => {
158e41f4b71Sopenharmony_ci          TextInput({ placeholder: 'TextInput ' + placeholder })
159e41f4b71Sopenharmony_ci            .margin(30)
160e41f4b71Sopenharmony_ci        })
161e41f4b71Sopenharmony_ci      }
162e41f4b71Sopenharmony_ci    }
163e41f4b71Sopenharmony_ci    .height('100%')
164e41f4b71Sopenharmony_ci    .width('100%')
165e41f4b71Sopenharmony_ci  }
166e41f4b71Sopenharmony_ci}
167e41f4b71Sopenharmony_ci```
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_ci![textinputkeyboardavoid](figures/TextInputKeyboardAvoid.gif)
170e41f4b71Sopenharmony_ci
171