6

画面キーボードが表示されたときと消えたときにAndroidから自動的に通知される方法はないかと思いました。

たとえば、編集テキストをクリックすると、imeが表示されます。イベントコールはありますか?そして、押し戻すと消えると、同様に電話もありますか?

このスレッドをAndroidで見つけました:画面キーボードが表示されたときに発生するイベントはどれですか?、しかし、まだ答えは得られていません。

目的は、可視性を自動的に操作するイベントが必要なためです。画面の上部に編集テキストがあり、その下にリストビューと線形レイアウトが重なり合ったアクティビティがあります。ユーザーに表示される内容を制御するために、可視性を操作します。デフォルトでは、linearlayoutが最初に表示されますが、ユーザーがテキストを入力しているときは、代わりにリストビューが表示されます。ユーザーが入力を終了すると、リストビューが非表示になります。この場合、画面キーボードは閉じられます。

onFocusChangeを使用して可視性の変更を実行しようとしましたが、画面キーボードが消えても、編集テキストはフォーカスを保持し、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

4

2 に答える 2

2

エディットテキストで戻るボタンをキャッチできます。これにより、キーボードが消えます。この方法の使用:

 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);
  }

検索は素晴らしいです:onKeyPreImeまたはAndroid API

于 2011-07-04T14:58:45.317 に答える
1

このスレッドにはonConfigurationChangedを使用した解決策があるようです:Androidで「仮想キーボードの表示/非表示」イベントをキャプチャする方法は?

于 2011-07-04T14:39:59.827 に答える