1

ユーザーが 2 つの EditText フィールドに入力すると、ページのレイアウト全体が 250 シフトされ、キーボードが閉じられたときに元に戻す必要があります。

public class DoneOnEditorActionListener は OnEditorActionListener を実装します {

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    // TODO Auto-generated method stub
    try{
        if (actionId == EditorInfo.IME_ACTION_DONE 
                || actionId == EditorInfo.IME_NULL
                || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
            InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);

            LoginActivity.rootView.setY(0);
            return true;    
        }
    }catch (Exception e){

    }

    return false;
}

正常に動作しますが、戻るボタンをクリックすると、キーボードも閉じられ、レイアウトが元に戻りません。ソフトキーボードが起動しているときにのみ戻るボタンを無効にする方法はありますか?

4

1 に答える 1

1

ソフトキーボードが起動しているときに変数を設定し(Androidでソフトウェアキーボードの可視性を確認する方法は?)、オーバーライドされたonBackPressed()メソッドで確認します。キーボードが起動している場合は何もせず、それ以外の場合はスーパー メソッドを呼び出します。

プライベート ブール値 isKeyboardUp;

@Override
public void onBackPressed()
    {
        if(isKeyboardUp)
          //do nothing
        else
          super.onBackPressed();
    }
于 2013-10-15T06:57:01.050 に答える