web-dev-qa-db-ja.com

AndroidエミュレータでEditTextのオートコンプリート/オートサジェストをプログラムで無効にします

ターゲティングAndroid 2.2

次の質問に対する回答を読みました。

EditTextの自動提案をオフにしますか?

Android:複数行&EditTextで自動提案なし

私は提案について次のバリエーションを試しました。

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER);

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_VARIATION_FILTER);

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

これらはすべて、私がテストしてきたほとんどのデバイス(Droid X、Droid 2、Thunderbolt、Incredible)で機能しますが、エミュレーターと少なくとも1つのデバイス(Samsung GT i5500)では機能しません。

他の方法はありますか プログラムで エミュレータと特定のデバイスが認識して尊重する方法で、EditTextのオートコンプリート/オートサジェストを無効にしますか?

44
gyoda

Vodafone 845(2.1)、huawei 8800(2.2)デバイスの場合、textVisiblePasswordはWordの予測を妨げるようです。

    vendorId.setInputType(Android.text.InputType.TYPE_CLASS_TEXT | Android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

または

Android:inputType = "textVisiblePassword"

46
bob

レイアウトXMLで、EditTextに次の属性を追加します。

Android:inputType="text|textNoSuggestions"

これも上記のアプローチも機能しない場合、これはほぼ確実にエミュレーターと他のデバイスの問題であり、メーカーに直接連絡する必要があります。

参照: Android:inputTypeEditTextTextViewのサブクラスであるため、この属性はEditTextsでも機能します)。

24
Phil

上記のすべてを試してみましたが、上記のどれも本当に私を助けませんでした。私は利用可能なInputTypesを検索しましたが、たまたまTYPE_TEXT_FLAG_AUTO_COMPLETE

mEditText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

その説明から:

これは一般に、インプットメソッドが候補自体を表示すべきではないことを意味しますが、エディターがInputMethodSession.displayCompletions()から独自の補完/候補を提供することを期待できます。

完了セットを指定していないため、結果としてnot getting any auto-suggestions

PS。フラグInputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD上記のコマンドで述べたように、このトリックも行いますが、disablesキーボードの言語を切り替えます。

15
theb1uro

個人的に、このコードは私を助けます:

autoCompleteTextView.setAdapter(null);
autoCompleteTextView.setText(address);
autoCompleteTextView.setAdapter(adapter);

テキストを設定するときに提案を無効にして、アダプターを削除し、setTextを呼び出した後、それを返します。

そのため、提案を無効にする場合は、次を使用します。

autoCompleteTextView.setAdapter(null);
6
itzhar

EdittextにAndroid:inputType="textNoSuggestions|textVisiblePassword"を使用すると、問題が修正されます。

2

クラスAutoCompleteTextViewを使用して、何も含まないアダプターを設定できます AutoCompleteTextView Class Reference

 public class CountriesActivity extends Activity {
   protected void onCreate(Bundle icicle) {
     super.onCreate(icicle);
     setContentView(R.layout.countries);

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
             Android.R.layout.simple_dropdown_item_1line, COUNTRIES);
     AutoCompleteTextView textView = (AutoCompleteTextView)
             findViewById(R.id.countries_list);
     textView.setAdapter(adapter);
   }

   private static final String[] COUNTRIES = new String[] {""};
 }
2
Davide

私はエミュレーターで同じ問題と戦っていました。テスト中に、表示されているのは通常のオートコンプリートではなく、特別なアジア文字プレビューであることを認識しました(おそらく、1つのアジア文字を生成するには複数のキーが必要だからです)。そこで、言語を英語に設定することでこれを解決しました。私が見ていたのは、「言語とキーボード」の「日本語IME」設定の下にリストされた「キープレビュー」オプションだったと思います。

キーボードの操作と言語サポートを詳しく調べることなく、個々のアプリ内でこれを無効にすることはかなり難しいと思います。

1
Klox

EditTextのsetThreshold()メソッドを使用するだけです。予測を表示したくない場合は、しきい値を100に設定します。予測の表示を再度有効にするには、必要に応じて1または2などの小さな整数に戻します。

1
kaolick

また、以下を使用して、編集テキストの自動提案を無効にすることもできます。

<EditText>
Android:inputType="textNoSuggestions|textVisiblePassword"
</EditText>

これは私のために働いた。

1