其他分享
首页 > 其他分享> > Android:当屏幕键盘出现并消失时,是否有任何自动调用的侦听器?

Android:当屏幕键盘出现并消失时,是否有任何自动调用的侦听器?

作者:互联网

我想知道当屏幕键盘显示和消失时是否有任何方法可以通过android自动通知.

例如,当我们点击edittext时,会出现ime.会有任何活动电话吗?
当我们按下它时它会消失,同样会有任何电话吗?

我找到了这个帖子Android: which event fires when on screen keyboard appears?,但还没有找到答案.

目的是因为我需要一个事件来自动操纵可见性.我在屏幕顶部有一个带有edittext的活动,在它下面是一个listview和一个linearlayout,它们位于彼此的顶部.为了控制用户看到的内容,我操纵了可见性.默认情况下,最初会显示linearlayout,但是,当用户输入文本时,应显示列表视图.当用户完成输入时,列表视图应该消失,在这种情况下,将关闭屏幕键盘.

我尝试使用onFocusChange完成可见性的更改,但是,即使屏幕键盘消失,edittext仍然保留焦点,并且线性布局永远不会再出现.

下面是我对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

解决方法:

您可以在编辑文本中捕获后退按钮,这将使键盘消失.使用此方法:

 public boolean onKeyPreIme(int keyCode, KeyEvent event) {
   if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
           // Do your thing here
           return false;
   }
   return super.dispatchKeyEvent(event);
  }

搜索很棒:onKeyPreImeAndroid API

标签:android,on-screen-keyboard
来源: https://codeday.me/bug/20190704/1380401.html