Mỗi trường văn bản yêu cầu một loại nội dung nhập văn bản nhất định, chẳng hạn như địa chỉ email, số điện thoại hoặc văn bản thuần tuý. Bạn phải chỉ định loại dữ liệu nhập cho từng trường văn bản trong ứng dụng để hệ thống hiển thị phương thức nhập mềm thích hợp, chẳng hạn như bàn phím ảo.
Ngoài loại nút có sẵn với phương thức nhập, bạn có thể chỉ định các hành vi như liệu phương thức nhập có cung cấp đề xuất chính tả, viết hoa các câu mới hay không và thay thế nút trả lại vị trí đầu dòng có một nút hành động như Xong hoặc Tiếp theo. Trang này cho biết cách để chỉ định các đặc điểm này.
Chỉ định loại bàn phím
Luôn khai báo phương thức nhập cho các trường văn bản của bạn bằng cách thêm phương thức
android:inputType
cho
Phần tử <EditText>
.
![đầu vào số điện thoại](https://developer.android.com/static/images/ui/edittext-phone.png?hl=vi)
phone
.Ví dụ: nếu bạn muốn có phương thức nhập để nhập số điện thoại, hãy sử dụng
Giá trị "phone"
:
<EditText android:id="@+id/phone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/phone_hint" android:inputType="phone" />
![Loại nhập textPassword](https://developer.android.com/static/images/training/input/ime_password.png?hl=vi)
textPassword
.Nếu trường văn bản là dành cho mật khẩu, hãy sử dụng giá trị "textPassword"
để trường văn bản
ẩn thông tin đầu vào của người dùng:
<EditText android:id="@+id/password" android:hint="@string/password_hint" android:inputType="textPassword" ... />
Thuộc tính android:inputType
có thể có một số giá trị được ghi nhận,
và bạn có thể kết hợp một số giá trị để chỉ định giao diện phương thức nhập cũng như
của Google.
Bật tính năng đề xuất chính tả và các hành vi khác
![tự động sửa lỗi](https://developer.android.com/static/images/training/input/ime_autocorrect.png?hl=vi)
textAutoCorrect
sẽ cung cấp tính năng tự động sửa lỗi cho
lỗi chính tả.Thuộc tính android:inputType
cho phép bạn chỉ định các hành vi khác nhau cho dữ liệu đầu vào
. Quan trọng nhất, nếu trường văn bản của bạn là dành cho mục đích nhập văn bản cơ bản—chẳng hạn như
tin nhắn văn bản—bật tính năng tự động sửa lỗi chính tả bằng "textAutoCorrect"
giá trị.
Bạn có thể kết hợp các hành vi và kiểu phương thức nhập khác nhau với
Thuộc tính android:inputType
. Ví dụ: dưới đây là cách tạo một trường văn bản
viết hoa từ đầu tiên của câu và cũng tự động sửa lỗi chính tả:
<EditText android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType= "textCapSentences|textAutoCorrect" ... />
Chỉ định thao tác của phương thức nhập
Hầu hết các phương thức nhập mềm đều cung cấp nút hành động của người dùng ở góc dưới cùng thích hợp cho
trường văn bản hiện tại. Theo mặc định, hệ thống sử dụng nút này cho nút Tiếp theo hoặc
Hành động Xong trừ phi trường văn bản của bạn hỗ trợ văn bản nhiều dòng, chẳng hạn như với
android:inputType="textMultiLine"
– trong trường hợp này, nút hành động là một toa
lợi nhuận. Tuy nhiên, bạn có thể chỉ định các thao tác khác phù hợp hơn với trường văn bản,
chẳng hạn như Gửi hoặc Bắt đầu.
Để chỉ định nút hành động trên bàn phím, hãy sử dụng
android:imeOptions
với một giá trị hành động như "actionSend"
hoặc "actionSearch"
. Ví dụ:
![nút gửi](https://developer.android.com/static/images/ui/edittext-actionsend.png?hl=vi)
android:imeOptions="actionSend"
.<EditText android:id="@+id/search" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/search_hint" android:inputType="text" android:imeOptions="actionSend" />
Sau đó, bạn có thể lắng nghe lần nhấn nút hành động bằng cách xác định
TextView.OnEditorActionListener
cho phần tử EditText
. Trong
trình nghe, hãy phản hồi mã thao tác IME thích hợp được xác định trong
EditorInfo
lớp,
chẳng hạn như
IME_ACTION_SEND
,
như trong ví dụ sau:
Kotlin
findViewById<EditText>(R.id.search).setOnEditorActionListener { v, actionId, event -> return@setOnEditorActionListener when (actionId) { EditorInfo.IME_ACTION_SEND -> { sendMessage() true } else -> false } }
Java
EditText editText = (EditText) findViewById(R.id.search); editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { boolean handled = false; if (actionId == EditorInfo.IME_ACTION_SEND) { sendMessage(); handled = true; } return handled; } });
Cung cấp đề xuất tự động hoàn thành
Nếu muốn cung cấp đề xuất cho người dùng khi họ nhập, bạn có thể sử dụng lớp con của
Đã gọi EditText
AutoCompleteTextView
Để triển khai tính năng tự động hoàn tất, bạn phải chỉ định
Adapter
cung cấp văn bản
nội dung đề xuất. Có một số bộ chuyển đổi có sẵn, tuỳ thuộc vào nguồn của dữ liệu, chẳng hạn như
từ cơ sở dữ liệu hoặc một mảng.
![gợi ý văn bản](https://developer.android.com/static/images/ui/edittext-autocomplete.png?hl=vi)
AutoCompleteTextView
có văn bản
đề xuất.Quy trình sau đây mô tả cách thiết lập một AutoCompleteTextView
cung cấp đề xuất từ một mảng bằng cách sử dụng
ArrayAdapter
:
- Thêm
AutoCompleteTextView
vào bố cục. Đây là một bố cục chỉ có văn bản trường:<?xml version="1.0" encoding="utf-8"?> <AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/autocomplete_country" android:layout_width="fill_parent" android:layout_height="wrap_content" />
- Xác định mảng chứa tất cả các đề xuất văn bản. Ví dụ: dưới đây là
một mảng tên quốc gia:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="countries_array"> <item>Afghanistan</item> <item>Albania</item> <item>Algeria</item> <item>American Samoa</item> <item>Andorra</item> <item>Angola</item> <item>Anguilla</item> <item>Antarctica</item> ... </string-array> </resources>
- Trong
Activity
hoặcFragment
, hãy sử dụng mã sau để chỉ định bộ chuyển đổi cung cấp các đề xuất:Kotlin
// Get a reference to the AutoCompleteTextView in the layout. val textView = findViewById(R.id.autocomplete_country) as AutoCompleteTextView // Get the string array. val countries: Array<out String> = resources.getStringArray(R.array.countries_array) // Create the adapter and set it to the AutoCompleteTextView. ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries).also { adapter -> textView.setAdapter(adapter) }
Java
// Get a reference to the AutoCompleteTextView in the layout. AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country); // Get the string array. String[] countries = getResources().getStringArray(R.array.countries_array); // Create the adapter and set it to the AutoCompleteTextView. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries); textView.setAdapter(adapter);
Trong ví dụ trước, một
ArrayAdapter
mới được khởi tạo để liên kết từng mục trong Mảng chuỗicountries_array
thành mộtTextView
tồn tại trong Bố cụcsimple_list_item_1
. Đây là bố cục do Android cung cấp nhằm mang lại giao diện chuẩn cho văn bản trong danh sách. -
Chỉ định bộ chuyển đổi cho
AutoCompleteTextView
bằng cách gọisetAdapter()