Я пытаюсь узнать, отображается / скрывается раскрывающийся список AutoCompleteTextView . При нажатии кнопки я хочу показать раскрывающийся список (если он скрыт) и скрыть его (если он отображается). Для этого я использую метод isPopupShowing()
, но он всегда возвращает FALSE .
Примере:
@Override
public void onClick(View view) {
if (view.getId() == button.getId()) {
if (autoCompleteTextView.isPopupShowing()) {
autoCompleteTextView.dismissDropDown();
} else {
autoCompleteTextView.showDropDown();
}
}
}
2 ответа
Когда AutoCompleteTextView теряет фокус, раскрывающийся список исчезает. Таким образом, раскрывающийся список всегда невидим, когда вы нажимаете кнопку.
Просто добавьте новое логическое свойство к вашему слушателю, чтобы запомнить последнее состояние.
Код на Котлине
val afill = findViewById<AutoCompleteTextView>(R.id.myTextId)
var showAFill = false
afill.addTextChangedListener (object : TextWatcher {
override fun afterTextChanged(p0: Editable?) {
showAFill = afill.isPopupShowing
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int)
}
})
afill.onItemClickListener = object : AdapterView.OnItemClickListener {
override fun onItemClick(parent: AdapterView<*>?, view: View, position: Int, id: Long) {
showAFill = false
}
}
Если вы нажмете на любой элемент в автозаполнении, он закроется.
showAutofill.setOnClickListener { _ ->
if (showAFill) afill.dismissDropDown()
else afill.showDropDown()
showAFill = !showAFill
}
Показать автозаполнение - id моей кнопки на макете
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.