3

カスタマイズされたダイアログがあります。ダイアログ内には、EditText があります。EditText 内をタッチすると、ソフト キーボードが表示されます。ダイアログの他の場所に触れたときに、このキーボードを非表示にしたい。

アクティビティでキーボードを非表示にする方法を知っています。ダイアログでこれを行う方法がわかりません。

ありがとうございました。

4

2 に答える 2

4

focuslisners を使用すると簡単に実行できます。以下のコード サンプルを参照してください。

EditText.setOnFocusChangeListener(new View.OnFocusChangeListener() 
        { 
            @Override 
            public void onFocusChange(View v, boolean hasFocus) 
            { 
                if (hasFocus) 
                { 
                    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
                    imm.showSoftInput(EditText, InputMethodManager.SHOW_IMPLICIT); 
                }
                else
                {
                   InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                   imm.hideSoftInputFromWindow(EditText.getWindowToken(), 0);
                }
            } 
        });

編集:

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <LinearLayout
            android:id="@+id/wrapper"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:focusable = "true"
            android:isFocusableInTouchMode = "true"
            android:clickable = "true" > 

                <EditText
                android:id="@+id/EditText"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:hint="hint"
                android:singleLine="true" />

            </LinearLayout>         
    </RelativeLayout>

\必ずフォーカスを合わせる:

    LinearLayout actionHide = (LinearLayout) findViewById(R.id.wrapper);
        actionHide.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                actionHide.requestFocus(); // use this to trigger the focus listner
                //or use code below to set the keyboard to hidden
                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(EditText.getWindowToken(), 0);

            }
        });
于 2012-11-04T08:02:14.290 に答える
1

EdittextにInputMethodManager.SHOW_FORCEDを設定してみてください。

InputMethodManager input_manager = (InputMethodManager) 
                       getSystemService(Context.INPUT_METHOD_SERVICE);
input_manager.showSoftInput(edittext, InputMethodManager.SHOW_FORCED);
于 2012-11-04T06:57:03.977 に答える