Tắt autosuggest cho EditText?


123

Có cách nào để lập trình tắt danh sách tự động đề xuất đó bật lên khi bạn nhập vào EditText không?

Câu trả lời:


122

Tôi đã có cùng một câu hỏi nhưng tôi vẫn muốn đặt tùy chọn này trong tệp XML của mình vì vậy tôi đã nghiên cứu thêm một chút cho đến khi tôi tự tìm ra nó.

Thêm dòng này vào EditText của bạn.

android:inputType="textFilter" 

Đây là một tip. Sử dụng dòng này nếu bạn muốn có thể sử dụng phím "enter".

android:inputType="textFilter|textMultiLine"

HÃY CÙNG TÔI! Trên thực tế, điều này hoạt động thực sự tốt khi bạn muốn làm cho một EditText trông giống như một textView.
sir_k

1
Không hoạt động trong một vài điện thoại Android 4.4
voghDev

API 24 / Android 7.0: Tôi đã thay thế android:inputType="textPersonName"bằng văn bản được đề xuất nhưng nó vẫn hiển thị hàng gợi ý (có biểu tượng mic).
Cháu

120
android:inputType="textNoSuggestions"  

bạn cũng nên đọc


5
Lưu ý rằng "textNoSuggestions" chỉ hoạt động cho API 5 trở lên.
glr

89
@gyller bạn đã thấy thiết bị nào có API nhỏ hơn 5 chưa?
kreker

15
0,23% người dùng của tôi ở trên 1.6 (API cấp 4). :)
Jeremy Logan

1
Mặc dù sau đó bạn mất phím ENTER. Nếu bạn muốn có thể sử dụng ENTERs android: inputType = "textNoSuggestions | textMultiLine"
barlop

3
Nó vô hiệu hóa các đề xuất nhưng vẫn hiển thị hàng gợi ý (có tùy chọn mic trong đó).
VipulKumar

61
android:inputType="textVisiblePassword" 

hoạt động như một lá bùa


3
Tôi sẽ không đi con đường này. Đây là một hack và bạn không đề cập đến những tính năng khác của bàn phím có thể thay đổi khi bạn nói nó là mật khẩu. Sử dụng "văn bản | textNoSuggestions".
Michael Peterson

2
@ P1X3L5 textNoSuggestions không hoạt động cho nhiều thiết bị. Thật không may, việc hack này là cần thiết cho đến khi Google khắc phục điều đó
Tariq

1
Đối với tôi, nó tốt hơn, nó cũng loại bỏ dải phía trên bàn phím (nexus 5) không đúng với tất cả các thiết bị nhưng mang lại hiệu suất tốt hơn cho một số người dùng (nó cũng tắt khả năng nhập giọng nói)
Arkadiusz Cieśliński

1
cái này hoạt động để loại bỏ dấu .chấm được thêm vào cuối từ nếu hai khoảng trắng được gõ sau từ đó. Tôi đã sử dụng nó cho tìm kiếm trên thanh hành động Xem ((SearchView) MenuItemCompat.getActionView(searchItem)) .setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
Gene Bo

Đây là giải pháp duy nhất làm việc cho tôi. Các câu trả lời khác không hoạt động khi di chuyển qua một biểu mẫu và trở lại trường. Google là một loạt các dây thừng. Phát hành các tính năng đơn giản như vậy không đầy đủ và thử nghiệm kém.
tức giận vào

41

Cách thực hiện:

  1. Có lập trình
editText.inputType = InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS
  1. XML
android:inputType="textNoSuggestions"

Nếu bạn đã có một số cờ được đặt, thì:

  1. Có lập trình
inputType = if (disableSuggestions) {
  InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS or inputType
} else {
  inputType and InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS.inv()
}
  1. XML
android:inputType="textNoSuggestions|textPassword"

22

Cách tiếp cận đáng tin cậy nhất mà tôi đã tìm thấy để loại bỏ tự động hoàn thành là sử dụng

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 

trên điều khiển EditText của bạn. Như charlie đã báo cáo trong một câu trả lời khác trên trang này,

android:inputType="textVisiblePassword"

là phiên bản XML của cờ này.

Bạn có thể kết hợp cờ này với

InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

Tôi đã sử dụng InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS mà không có InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD, hoạt động cho hầu hết các điện thoại, nhưng sau đó tôi đã gặp một điện thoại Samsung mà tôi vẫn đang tự động hoàn tất.

Android lập trình vô hiệu hóa tự động hoàn thành / tự động đề xuất cho EditText trong trình giả lập

đã đề xuất sử dụng InputType.TYPE_TEXT_VariATION_VISIBLE_PASSWORD.

Tôi đã thử điều này (cùng với InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS) và nó đã hoạt động. Bạn có thể thấy lý do tại sao ngay cả một điện thoại có thể không đưa ra gợi ý rằng bạn không muốn tự động hoàn tất sẽ phải cho phép nó bị vô hiệu hóa cho trường mật khẩu. Nín thở, đây có thể là cách tốt nhất để có được những gì chúng ta muốn từ những chiếc điện thoại như vậy.

Trên một số thiết bị của tôi, phông chữ được thay đổi một chút bởi cờ này - đáng chú ý nhất là phân biệt số 0 (0) với chữ Oh (O) rõ ràng hơn, điều này rõ ràng sẽ rất quan trọng để hiển thị mật khẩu. Nhưng ít nhất nó đã hoạt động, và phông chữ mới không hấp dẫn.

Mặc dù bài đăng mà tôi thấy đề xuất này đã cũ, nhưng điện thoại tôi đã thử nghiệm rất gần đây - một chiếc Samsung Galaxy Note II (SPH-L900) có sẵn Android 4.1.2 từ Sprint. Bàn phím được chọn là "Bàn phím Samsung" và rõ ràng đây là mặc định cho điện thoại này khi khách hàng nhận được nó từ Sprint. Vì vậy, vấn đề này rõ ràng đã tồn tại trong nhiều năm qua đối với ít nhất một số dòng điện thoại quan trọng của Samsung.

Đối với những người như tôi, không có thiết bị thử nghiệm của Samsung, đây có thể là thông tin quan trọng.


3
Không hoạt động trên Samsung S3 với chương trình cơ sở ngày nay. Giáo sư.
Tên hiển thị

@SargeBorsch: Bạn có nói rằng TYPE_TEXT_VariATION_VISIBLE_PASSWORD cùng với TYPE_TEXT_FLAG_NO_SUGGESTIONS vẫn thực hiện tự động hoàn tất trên S3 của bạn không? Tôi vì vậy, bạn đang sử dụng bàn phím chứng khoán? Tôi không có S3 nhưng đã thử ứng dụng của mình (sử dụng phương pháp trên) trên S3 trước đây và không có tự động hoàn tất. Tôi có S4 chạy Android 4.4 (Cyanogenmod) và nó cũng không tự động hoàn thành.
Carl

@SargeBorsch: Nếu bạn muốn dùng thử một ứng dụng sử dụng cách tiếp cận trên trên S3 của mình, thì đây là của tôi: play.google.com/store/apps/ Kẻ sẽ rất thích nghe xem trường Kiểm tra Word ở cuối đó không ứng dụng (sử dụng các cờ trên) cố gắng tự động hoàn tất trên thiết bị của bạn. TIA.
Carl

Cảm ơn, sẽ kiểm tra sớm
Tên hiển thị

> "Bạn có nói rằng TYPE_TEXT_VariATION_VISIBLE_PASSWORD cùng với TYPE_TEXT_FLAG_NO_SUGGESTIONS vẫn thực hiện tự động hoàn tất trên S3 của bạn không?" Đúng chính xác. Mặc dù cũng có loại E-mail, bởi vì đó là một email nhập vào
Tên hiển thị

20

Đối với phiên bản Android 8.0 trở lên, mã này không hoạt động và đối với chế độ xem tự động hoàn thành, mã này cũng không hoạt động, vì vậy tôi sẽ đề nghị bạn sử dụng mã dưới đây cho Vô hiệu hóa các đề xuất tự động trong 8.0 hoặc trên android vesrion sử dụng thuộc tính này của edittext android: quan trọngForAutofill = "không"

                   <EditText
                            android:id="@+id/name"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:enabled="false"
                            android:focusable="false"
                            android:imeOptions="actionDone"
                            android:maxLength="80"
                            android:maxLines="1"
                            android:textColor="@color/colorBlack"
                            android:textColorHint="@color/colorBlack"
                            android:importantForAutofill="no"
                            android:textSize="@dimen/_12sdp"
                            app:bFontsEdt="light" />

và đối với chế độ xem văn bản AutoComplete như thế này, hãy sử dụng Trường này để Vô hiệu hóa đề xuất tự động android: quan trọngForAutofill = "không" :

      <AutoCompleteTextView
                        android:id="@+id/autocompleteEditTextView"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="@dimen/_3sdp"
                        android:layout_marginTop="@dimen/_5sdp"
                        android:background="@null"
                        android:imeOptions="actionDone"
                        android:singleLine="true"
                        android:text=""
                        android:textColor="@color/colorBlack"
                        android:textColorHint="@color/colorGrayDark"
                        android:importantForAutofill="no"
                        android:textSize="@dimen/_12sdp" />

2
Tuyệt vời! Đây là điều duy nhất làm việc cho tôi.
Vòng nguyệt quế Thomson

Điều duy nhất phù hợp với tôi, thx @MaheshKeshvala, được ủng hộ để cứu ngày của tôi.
Ravi Vaniya

Tự động điền không phải là tự động hoàn thành bàn phím, chúng là các tính năng khác nhau. Tự động điền được xử lý bởi HĐH, trong khi tự động hoàn tất được xử lý bởi nhà phát triển bàn phím (hy vọng).
milosmns

10

Bạn có thể giải quyết vấn đề này bằng cách sử dụng:

android:importantForAutofill="no" 

Android O có tính năng hỗ trợ Tự động điền cho các trường, Chỉ cần sử dụng tính năng này trong xml của bạn, Nó sẽ vô hiệu hóa gợi ý tự động điền


7

Vì đây vẫn là một vấn đề, tôi sẽ đăng câu trả lời này. android: inputType = "textVisiblePassword" hoạt động nhưng điều này là không mong muốn, trước tiên vì đó là sự trình bày sai về đầu vào và thứ hai vì nó vô hiệu hóa Gesture Typing!

Thay vào đó, tôi đã phải sử dụng BÓNG cờ textNoSuggestions và textFilter. Một trong hai đã không làm việc.

android:inputType="textCapSentences|textFilter|textNoSuggestions"

TextCapSentences là vì lý do khác. Nhưng kiểu đầu vào này đã giữ kiểu gõ vuốt và vô hiệu hóa thanh công cụ gợi ý.


7

Tôi đã nhận được điều này trên điện thoại samsung chạy 4.4.4. Điều này đã giải quyết vấn đề của tôi

android:inputType="text|textVisiblePassword|textNoSuggestions"

Tương tự trên Samsung chạy 8.1. Điều duy nhất phù hợp với tôi là android: inputType = "textVisiblePassword | textNoSuggestions"
Eino Gourdin

4

OK, vấn đề là - trong Eclipse bạn không nhận được đề xuất cho cờ có tên: textNoSuggestion

Và bạn không thể đặt nó trong tệp main.xml (nơi bạn thiết kế giao diện người dùng) vì thuộc tính đó cho inputType không được nhận dạng. Vì vậy, bạn có thể đặt nó trong mã bằng cách sử dụng int const:

EditText txtTypeIt = (EditText) this.findViewById(R.id.txtTypeIt);
txtTypeIt.setInputType(524288);

Và cảm ơn jasta00 đã giúp tôi tìm ra câu trả lời cho câu hỏi này.


6
Điều này thực hiện công việc ... .setInputType (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
w.donahue

2
Đồng ý, sử dụng hằng số không phải là giá trị
David Snabel-Caunt

1
@ kape123 Bạn không thể đặt android: inputType = "textNoSuggestions" trong xml vì mục tiêu xây dựng của bạn thấp hơn 5 api
kreker

Lưu ý rằng đối với một số điện thoại Samsung, tự động hoàn thành bàn phím tiêu chuẩn sẽ không bị tắt bởi InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS. Một người đề xuất sử dụng InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD trong bài đăng khá cũ này: stackoverflow.com/questions/6281514/,
Carl


1
EditText emailTxt=(EditText)findViewById(R.id.email);
emailTxt.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

Điều này sẽ giúp bạn.


1
    // 100% correct & tested
    txtKey = (EditText) view.findViewById(R.id.txtKey);
    txtKey.setPrivateImeOptions("nm");
    txtKey.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        txtKey.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
    }

0

Bạn chỉ có thể sử dụng setThreshold()phương thức của EditText . Đặt ngưỡng thành giả sử 100 khi bạn không muốn hiển thị dự đoán. Nếu bạn muốn kích hoạt lại hiển thị dự đoán, hãy đặt nó trở lại một int nhỏ như 1 hoặc 2 tùy theo nhu cầu của bạn.


không có setThrưỡng () cho EditText, bạn có thể giải thích không?
xử
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.