私は答えを見つけることができない問題に直面しています。私はTextWatcherを使ってeditTextをデータベースの結果のリストを見つけることができます。結果をPopupMenuに表示します。ポップアップメニューはキーボードのクリックを避けることを避けます
final List<SearchResult> searchResults = new ArrayList<>();
final PopupMenu menu = new PopupMenu(getActivity(), binding.bottomSheetWriteNews.editTextNewsSubCategory);
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
binding
.bottomSheetWriteNews
.editTextNewsSubCategory
.setText(item.getTitle());
return false;
}
});
final Realm realm = Realm.getDefaultInstance();
binding.bottomSheetWriteNews.editTextNewsSubCategory.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
searchResults.clear();
menu.getMenu().clear();
RealmResults<SubCategory> subCategoriesResult = realm.where(SubCategory.class).contains("name", s.toString(), Case.INSENSITIVE).findAll();
for(SubCategory subCategory : subCategoriesResult) {
searchResults.add(new SearchResult(subCategory.getId(), subCategory.getName(), false));
menu.getMenu().add(subCategory.getName());
}
menu.show();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
私の問題は、私はのPopupMenuは私が望んでいた文字を入力する代わりに却下されているキーボードをクリックして、すべての回である:それはこのようになります。それはユーザーにとって迷惑で使い物にならない。私は、キーボードのクリックがPopupMenuを却下しないようにしたい。公式の文書ではTouching outside of the popup will dismiss it
と書かれていますが、私はGoogle Keepを使用していますが、私の問題なしで同じ機能(結果をフィルタリングするためにテキスト入力用のPopupMenuを表示)があります。
ありがとうございました!