EditText에 대한 자동 제안을 끄시겠습니까?


123

EditText에 입력 할 때 나타나는 자동 제안 목록을 프로그래밍 방식으로 끄는 방법이 있습니까?

답변:


122

같은 질문이 있었지만 여전히 XML 파일에이 옵션을 설정하고 싶었 기 때문에 직접 알아낼 때까지 조금 더 조사했습니다.

이 줄을 EditText에 추가하십시오.

android:inputType="textFilter" 

여기에 팁이 있습니다. "Enter"키를 사용하려면이 줄을 사용하십시오.

android:inputType="textFilter|textMultiLine"

내 찬성! 실제로 이것은 EditText를 textView처럼 보이게 만들고 싶을 때 정말 잘 작동합니다.
sir_k

1
두 개의 Android 4.4 휴대 전화에서도 작동하지 않습니다
voghDev

API 24 / Android 7.0 : android:inputType="textPersonName"제안 된 텍스트 로 대체 했지만 여전히 제안 행 (마이크 아이콘 포함)이 표시됩니다.
Neph

120
android:inputType="textNoSuggestions"  

또한 당신은 이것을 읽는 것이 좋습니다


5
"textNoSuggestions"는 API 5 이상에서만 작동합니다.
glr

89
@gyller API가 5 미만인 장치를 본 적이 있습니까?
kreker

15
내 사용자의 0.23 %가 1.6 (API 레벨 4)을 사용합니다. :)
Jeremy Logan

1
그런 다음 ENTER 키를 잃어 버립니다. 엔터를 사용하려면 android : inputType = "textNoSuggestions | textMultiLine"
barlop

3
제안을 비활성화하지만 여전히 제안 행을 표시합니다 (마이크 옵션이 있음).
VipulKumar 2015 년

61
android:inputType="textVisiblePassword" 

매력처럼 작동


3
나는이 길을 가지 않을 것이다. 그것은 해킹이며 암호 용이라고 말할 때 키보드의 다른 기능이 변경 될 수 있다는 것을 언급하지 않습니다. "text | textNoSuggestions"를 사용합니다.
Michael Peterson

2
@ P1X3L5 textNoSuggestions는 많은 장치에서 작동하지 않습니다. 불행하게도이 해킹 구글 수정 될 때까지 필요하다
타리크는

1
나에게는 더 좋았습니다. 또한 모든 장치에 해당 할 필요는 없지만 일부 사용자에게는 더 나은 성능을 제공하는 키보드 위의 스트립 (nexus 5)을 제거합니다 (음성 입력 기능도 해제 됨)
Arkadiusz Cieśliński

1
이것은 .단어 뒤에 두 개의 공백이 입력되면 단어 끝에 추가 된 마침표 문자 를 제거하는 데 사용 되었습니다. 나는 작업 표시 줄의 searchView을 위해 그것을 사용 ((SearchView) MenuItemCompat.getActionView(searchItem)) .setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
진 보에게

이것은 나를 위해 일한 유일한 솔루션입니다. 양식을 이동하고 필드로 돌아갈 때 다른 답변은 작동하지 않습니다. Google은 그런 마약입니다. 불완전하고 제대로 테스트되지 않은 간단한 기능을 출시합니다.
angryITguy

41

방법 :

  1. 프로그래밍 방식
editText.inputType = InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS
  1. XML
android:inputType="textNoSuggestions"

이미 일부 플래그가 설정되어 있으면 다음을 수행하십시오.

  1. 프로그래밍 방식
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

자동 완성을 제거하는 가장 신뢰할 수있는 방법은

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 

EditText 컨트롤에서. 찰리가이 페이지에서 다른 답변을보고했듯이

android:inputType="textVisiblePassword"

이 플래그의 XML 버전입니다.

이 플래그를 다음과 결합 할 수 있습니다.

InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

대부분의 휴대폰에서 작동하는 InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD없이 InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS를 사용했지만 자동 완성 기능이있는 삼성 휴대폰을 발견했습니다.

Android는 에뮬레이터에서 EditText에 대한 자동 완성 / 자동 제안을 프로그래밍 방식으로 비활성화합니다.

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD 사용을 제안했습니다.

나는 이것을 (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS와 함께) 시도했고 작동했습니다. 자동 완성을 원하지 않는다는 힌트를받지 못하는 휴대폰에서도 암호 필드에 대해 비활성화를 허용 해야하는 이유를 알 수 있습니다. 숨을 참을 수없는 상황에서 이러한 전화기에서 원하는 것을 얻을 수있는 가장 좋은 방법 일 수 있습니다.

내 장치 중 일부에서는이 플래그에 의해 글꼴이 약간 변경되었습니다. 가장 눈에 띄는 것은 영 (0)과 오 (O)를 더 명확하게 구별하기 위해 암호를 표시하는 데 중요합니다. 그러나 적어도 효과가 있었고 새 글꼴은 매력적이지 않았습니다.

이 제안을 찾은 게시물은 오래되었지만 테스트 한 휴대폰은 Sprint의 Samsung Galaxy Note II (SPH-L900) 재고 Android 4.1.2입니다. 선택한 키보드는 "삼성 키보드"였으며 고객이 Sprint에서 받았을 때이 휴대 전화의 기본값이었던 것 같습니다. 따라서이 문제는 삼성의 중요한 휴대폰 제품군 중 적어도 몇 년 동안 지속되어 왔습니다.

저처럼 삼성 테스트 장치가없는 분들에게는 중요한 정보가 될 수 있습니다.


3
오늘날의 펌웨어를 사용하는 Samsung S3에서는 작동하지 않습니다. 죄송합니다.
표시 이름

@SargeBorsch : TYPE_TEXT_VARIATION_VISIBLE_PASSWORD와 TYPE_TEXT_FLAG_NO_SUGGESTIONS가 여전히 S3에서 자동 완성을 수행한다고 말씀하시는 건가요? 그래서, 당신은 기본 키보드를 사용하고 있습니까? 나는 S3가 없지만 과거에 S3에서 위의 접근 방식을 사용하는 내 앱을 사용해 보았고 자동 완성이 없었습니다. Android 4.4 (Cyanogenmod)를 실행하는 S4가 있으며 자동 완성도되지 않습니다.
Carl

@SargeBorsch : S3에서 위의 접근 방식을 사용하는 앱을 사용하고 싶다면 여기에 있습니다. play.google.com/store/apps/… 하단에있는 Check Word 필드가 있는지 듣고 싶습니다. 위의 플래그를 사용하는 앱이 기기에서 자동 완성을 시도합니다. TIA.
Carl

감사합니다. 곧 확인하겠습니다
표시 이름

> "TYPE_TEXT_VARIATION_VISIBLE_PASSWORD와 TYPE_TEXT_FLAG_NO_SUGGESTIONS가 여전히 S3에서 자동 완성을 수행한다고 말씀하시는 건가요?" 네, 맞습니다. E-mail 유형도 있지만 이메일 입력이기 때문에…
표시 이름

20

안드로이드 버전 8.0 이상에서는이 코드가 작동하지 않고 자동 완성 textview의 경우도이 코드가 작동하지 않으므로 8.0 이상에서 자동 제안 사용 안함에 대해 아래 코드를 사용하는 것이 좋습니다. android vesrion은 edittext android 의이 속성을 사용합니다 . ImportantForAutofill = "no"

                   <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" />

이와 같은 AutoComplete textview의 경우이 필드를 사용하여 자동 제안 비활성화 android : importantForAutofill = "no" :

      <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
대박! 이것은 나를 위해 일한 유일한 것입니다.
Laurel Thomson

나를 위해 일하는 유일한 것, thx @MaheshKeshvala, 내 하루를 구하기 위해 upvoted.
Ravi Vaniya

자동 채우기는 키보드 자동 완성이 아니라 다른 기능입니다. 자동 완성은 OS에서 처리하는 반면 자동 완성은 키보드 개발자가 처리합니다.
milosmns

10

다음을 사용하여이 문제를 해결할 수 있습니다.

android:importantForAutofill="no" 

Android O에는 필드에 대한 자동 채우기를 지원하는 기능이 있습니다. xml에서만이 기능을 사용하면 자동 채우기 힌트가 비활성화됩니다.


7

이것은 여전히 ​​문제 이므로이 답변을 게시 할 것입니다. android : inputType = "textVisiblePassword"는 작동하지만 바람직하지 않습니다. 첫 번째는 입력을 잘못 표현한 것이고 두 번째는 제스처 타이핑을 비활성화하기 때문입니다!

대신에 textNoSuggestions와 textFilter 플래그를 모두 사용해야했습니다. 둘 중 하나만 작동하지 않았습니다.

android:inputType="textCapSentences|textFilter|textNoSuggestions"

textCapSentences는 다른 이유로였습니다. 그러나이 inputType은 스 와이프 입력을 유지하고 제안 도구 모음을 비활성화했습니다.


7

나는 4.4.4를 실행하는 삼성 전화에서 이것을 얻었습니다. 이것은 내 문제를 해결했습니다.

android:inputType="text|textVisiblePassword|textNoSuggestions"

8.1을 실행하는 삼성에서도 동일합니다. 나를 위해 일한 유일한 것은 android : inputType = "textVisiblePassword | textNoSuggestions"
Eino Gourdin

4

좋아, 문제는-Eclipse에서는 textNoSuggestion이라는 플래그에 대한 제안을 얻지 못합니다.

그리고 inputType의 속성이 인식되지 않기 때문에 main.xml (UI를 디자인하는 곳)에서 설정할 수 없습니다. 따라서 int const를 사용하여 코드에서 설정할 수 있습니다.

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

그리고 이것에 대한 답을 찾는 데 도움을 주신 jasta00 에게 감사드립니다 .


6
이 작업을 수행합니다 ... .setInputType (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
w.donahue

2
합의, 상수를 값이 아닌 사용
데이비드 Snabel-Caunt

1
@ kape123 빌드 대상이 5 api보다 낮기 때문에 xml에서 android : inputType = "textNoSuggestions"를 설정할 수 없습니다
kreker

일부 삼성 휴대 전화의 경우 표준 키보드 자동 완성이 InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS에 의해 해제되지 않습니다. 한 사람이 다소 오래된 게시물에서 InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD를 사용하도록 제안합니다. 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);

이것은 당신을 도울 것입니다.


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

간단히 EditText의 setThreshold()메서드 를 사용할 수 있습니다 . 예측을 표시하지 않으려면 임계 값을 100으로 설정합니다. 예측 표시를 다시 활성화하려면 필요에 따라 1 또는 2와 같은 작은 정수로 다시 설정하십시오.


EditText에는 setThreshold ()가 없습니다. 설명해 주시겠습니까?
behelit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.