Android: когда экранная клавиатура появляется и исчезает, есть ли какие-нибудь слушатели которые вызываются автоматически?

Мне было интересно, есть ли способ получать автоматические уведомления от Android, когда отображается экранная клавиатура и когда она исчезает.

Например, когда мы нажимаем на текст редактирования, появляется ime. Будут ли звонки на мероприятия? И когда он исчезнет, ​​когда мы нажмем назад, будут ли какие-то ровные вызовы?

Я нашел эту ветку Android: какое событие срабатывает при появлении экранной клавиатуры? , однако ответов пока нет.

Цель в том, что мне нужно событие для автоматического управления видимостью. У меня есть действие с текстом редактирования в верхней части экрана, под ним, списком и линейным расположением, которые расположены друг над другом. Чтобы контролировать то, что видит пользователь, я управляю видимостью. По умолчанию линейный макет отображается изначально, однако, когда пользователь вводит текст, вместо него должен отображаться список. Список должен исчезнуть, когда пользователь закончит ввод, что в этом случае экранная клавиатура будет закрыта.

Я попытался выполнить изменение видимости с помощью onFocusChange, однако, даже когда экранная клавиатура исчезает, edittext по-прежнему сохраняет фокус, и linearlayout больше никогда не появляется.

Ниже представлена ​​моя реализация onFocusChange

@Override
public void onFocusChange(View v, boolean hasFocus) 
{
    if(v.getId()==R.id.search_screen_keyword_textbox)
    {
        if(hasFocus)
        {
            filterSection.setVisibility(View.GONE);
            autoComSection.setVisibility(View.VISIBLE);
        }
        else
        {
            filterSection.setVisibility(View.VISIBLE);
            autoComSection.setVisibility(View.GONE);
        }
    }       
    else if(v.getId()==R.id.search_screen_location_textbox)
    {
        if(hasFocus)
        {
            filterSection.setVisibility(View.GONE); 
            autoComSection.setVisibility(View.VISIBLE);
        }
        else
        {
            filterSection.setVisibility(View.VISIBLE);
            autoComSection.setVisibility(View.GONE);
        }
    }
    else
    {
        filterSection.setVisibility(View.VISIBLE);
        autoComSection.setVisibility(View.GONE);
    }
}

. Если у кого-то есть какие-либо представления об этом, дайте мне знать. : D

5
задан Community 23 May 2017 в 12:07
поделиться