AutoCompleteTextViewで文字入力しなくても候補を表示する方法

こんにちは。今回も前回に引き続き小ネタを紹介しようと思う(上手くいって嬉しかったので共有したい)。

AutoCompeleteTextView#setThreshold(int)とは

“AutoCompleteTextView”とは何ぞや,という話は,私がいつもお世話になっているTechBoosterさんの記事,「AutoCompleteを使う」を見ていただければ幸いである(投げた)。
さて,そのAutoCompleteTextView(EditText拡張のはずなのになんで”TextView”なんだ……)の入力補完を開始する文字数を規定するメソッド,

[crayon-5d0a4cf416320621434410/]

について,ここに入れる値は「1以上」と決まっている(0をいれても挙動は1と同様になる)。つまり,最低でも1文字は入れないと補完がきかないのだ。

なんだそれは,ということで入力無しでも補完がされるように変更してみた。

自作クラス

まず,AutoCompleteTextViewを拡張した自作クラスを作る。

[crayon-5d0a4cf416326606318697/]

コンストラクタは引数の違う3種類を入れておかないとアプリが落ちる。その上で,

[crayon-5d0a4cf416329165338226/]

とすることで,EditTextをタッチ(つまり入力が0の時でも)すればshowDropDown()(補完候補の表示)を実行するようになる。

他にも機能は足せるかもしれないが,とりあえずここで終わりにしよう。

layoutファイル

実際に使用するにはレイアウトをいじる必要がある。

[crayon-5d0a4cf41632b764843398/]

のように,Viewタグをパッケージ名を含めた自作クラスのものにすげ替える。その他,Activity内での生成は,

[crayon-5d0a4cf41632d390660101/]

といつも通りキャストすればいい。

こんな細々としたことでも,自分で改造ができるようになってくるとアプリ開発してるなあって気がしてくるのです。

Share this:

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ABOUTこの記事をかいた人

東大修士(情報理工学;位置情報系機械学習)了。企業にて研究職なう。
Androidアプリ開発者,Flutter勉強中。
出没地域は映画館,本屋,勉強会。御朱印の集印がマイブーム。思い出深い神社は静岡県・伊豆山神社と滋賀県・多賀大社。登山したい。
投資チョットヤッテル。