2009-12-17 25 views
80

Khi người dùng nhấp vào EditView, Android sẽ mở bàn phím để người dùng có thể viết trong EditView.Làm cách nào để thực hiện nút Chỉnh sửa Android 'Xong' của Android và ẩn bàn phím khi được nhấp?

Vấn đề là khi người dùng viết xong, không có cách nào để ẩn bàn phím. Người dùng phải nhấn nút quay lại để ẩn bàn phím.

Có cách nào để hiển thị nút Done trên bàn phím sẽ ẩn bàn phím không?

+0

bản sao có thể có của [Cách tắt "Tiếp theo" trên bàn phím phần mềm EditText (thay thế bằng nút "Xong")] (http://stackoverflow.com/questions/2568637/how-to-disable-next- button-on-a-edittext-software-keyboard-replace-with-done) –

Trả lời

98

Sử dụng TextView.setImeOptions và vượt qua hành độngDone. như textView.setImeOptions(EditorInfo.IME_ACTION_DONE);

+4

'textView.setImeOptions (EditorInfo.IME_ACTION_DONE);' – sulai

+7

Tôi phải thêm 'textView.singleLine (true)' để làm việc này theo chương trình. – Jacksonkr

+0

nhưng điều này không được chấp nhận vì Android 2.3 –

6

Nếu tài sản không thay đổi cho widget nó có thể là tốt hơn để sử dụng như android:imeOptions="actionDone" trong cách bố trí xml tập tin.

120

Trước tiên, bạn cần phải thiết lập thuộc tính android:imeOptions bằng actionDone cho mục tiêu của bạn EditText như bên dưới. Điều đó sẽ thay đổi nút ‘TRỞ LẠI’ của bạn trong bàn phím ảo của EditText thành nút ‘XONG’.

<EditText 
    android:id="@+id/edittext_done" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:hint="Enter some text" 
    android:imeOptions="actionDone" 
    /> 
+1

Chrome cho biết liên kết của bạn trỏ đến phần mềm độc hại. Pse kiểm tra asap này ... – Michael

+0

@Michael đã xóa liên kết đó. Cảm ơn –

+10

Tôi đã phải thêm 'android: singleLine =" true "' để làm việc này thông qua xml – Jacksonkr

13

Sử dụng này:

android:singleLine="true" 
+0

Có ... nếu không, làm cách nào để phân biệt chuyển sang dòng tiếp theo so với đóng bàn phím? – jstewart379

+0

Đây là những gì cuối cùng làm việc cho tôi. Tôi đã quyết định có lỗi với 'actionDone' trong đó, chỉ trong trường hợp một số thiết bị phản ứng khác nhau. – Jacksonkr

72

Bao gồm cảimeOptionssingleLine:

<EditText 
    android:id="@+id/edittext_done" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:imeOptions="actionDone" 
    android:singleLine="true" 
    /> 
4

Đối với các mã:

editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 
1

Thực ra bạn có thể đặt văn bản tùy chỉnh thành nút màu xanh nhỏ đó. Trong tệp xml chỉ cần sử dụng

android:imeActionLabel="whatever" 

trên EditText của bạn.

Hoặc trong file java sử dụng

etEditText.setImeActionLabel("whatever", EditorInfo.IME_ACTION_DONE); 

tôi tùy tiện chọn IME_ACTION_DONE như một ví dụ về những gì nên đi trong tham số thứ hai cho chức năng này. Bạn có thể tìm thấy danh sách đầy đủ các hành động này here.

Cần lưu ý rằng điều này sẽ không làm cho văn bản xuất hiện trên tất cả bàn phím trên tất cả các thiết bị. Một số bàn phím không hỗ trợ văn bản trên nút đó (ví dụ: swiftkey). Và một số thiết bị không hỗ trợ nó. Một quy tắc tốt là, nếu bạn thấy văn bản đã có trên nút, điều này sẽ thay đổi nó thành bất cứ điều gì bạn muốn.

5

Sử dụng:

android:imeActionLabel="Done" 
android:singleLine="true" 
8

Sử dụng Hai dòng này để bạn EditText

android:imeActionLabel="Done" 
android:singleLine="true" 

hoặc bạn có thể đạt được nó lập trình bởi dòng này.

editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 
25
android:imeActionLabel="Done" 
android:singleLine="true" 

Trong tập tin XML làm việc tốt. Nhưng điều này cũng sẽ gây ra editText để tiếp tục nhập vào một dòng mà bạn có thể không muốn. Vì vậy, việc thêm sau vào mã của bạn sẽ đảm bảo rằng bạn sẽ không kết thúc nhập mọi thứ trên một dòng.

mainText.setHorizontallyScrolling(false); 
mainText.setMaxLines("Maximum integer value that you want to provide"); 
+0

MEGA UPVOTE !!!! –

4

ActionDone là sử dụng khi nhấp chuột vào nút bên cạnh trong bàn phím mà bàn phím thời gian là hide.Use trong Edit Text hoặc AppcompatEdit

XML

1,1 Nếu bạn sử dụng AppCompatEdittext

<android.support.v7.widget.AppCompatEditText 
    android:id="@+id/edittext" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:imeOptions="actionDone"/> 

1.2 Nếu bạn sử dụng Edittext

<EditText 
    android:id="@+id/edittext" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:imeOptions="actionDone"/> 

JAVA

EditText edittext= (EditText) findViewById(R.id.edittext); 
edittext.setImeOptions(EditorInfo.IME_ACTION_DONE); 
5

tôi đã chỉ ra rằng khi có rất nhiều người có thể đấu tranh vào đó mà không biết vấn đề.

Nếu bạn muốn kb để ẩn khi nhấp Done và bạn đặt android:imeOptions="actionDone" & android:maxLines="1"mà không thiết EditText bạn inputType nó sẽ KHÔNG làm việc như là mặc định inputType cho EditText không phải là "text" như nhiều người nghĩ .

như vậy, thiết lập chỉ inputType sẽ cung cấp cho bạn những kết quả mà bạn mong muốn bất cứ điều gì những gì bạn đang thiết lập nó để thích "text", "number" ... vv.

1

Để nhận được nút thực hiện

editText.setImeOptions(EditorInfo.IME_ACTION_DONE);

android:inputType="text" trong xml

Đối xử lý về xong nhấp từ bàn phím

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE){ // Your action on done return true; } return false; } });

Các vấn đề liên quan