Как закручивается спиннер? - PullRequest
0 голосов
/ 29 мая 2019

То, что я пытаюсь сделать, - это использовать закрывающее действие выпадающего счетчика, чтобы вызвать другое событие.Поскольку раскрывающийся список закрывается независимо от того, где вы касаетесь экрана, я предполагаю, что есть слушатель, который ожидает касания / щелчка / и т. Д.в любом месте, но я не могу найти этот слушатель.

Я могу использовать OnItemSelectedListener для запуска события, когда выбирается запись из выпадающего списка, легко.Я также могу слушать FrameLayout и запускать событие, основываясь на этом, но это потребовало дополнительного прикосновения к экрану (возможно, первое из них поглощается слушателем счетчика (?)).На экране есть и другие кнопки, поэтому проверить их все будет сложно.

Знаете ли вы, где находится код, который фактически открывает и закрывает счетчик?

1 Ответ

0 голосов
/ 30 мая 2019

Я попытался создать подкласс Spinner и переопределить onWindowFocusChanged. Это событие срабатывает, и hasWindowFocus == true при закрытии счетчика. То есть

class MySpinner(context: Context, attrSet: AttributeSet): Spinner(context, attrSet) {
    override fun onWindowFocusChanged(hasWindowFocus: Boolean) {
        Toast.makeText(context.applicationContext, "WindowFocusChanged! $hasWindowFocus", Toast.LENGTH_LONG).show()
        super.onWindowFocusChanged(hasWindowFocus)
    }
}

А в вашем XML нужно будет указать MySpinner.

...