2016-11-06 9 views
5

edittextの外側をタップしてキーボードを非表示にしたい。これは私のXMLコードです:edittextの外でワンタッチでキーボードを隠すには?

<RelativeLayout 
android:clickable="true" 
android:focusable="true" 
android:focusableInTouchMode="true" 
android:onClick="rl_main_onClick"> 
<RelativeLayout 
    //Here there are some widgets including some edittext. 
</RelativeLayout> 

は、これは私のJavaコード(MainActivity)です:

public void rl_main_onClick(View view) { 
    InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
} 

しかし、私はキーボードを非表示に二回タップする必要があります。最初のタップは、アイコンを入力するために「次へ」(最後の編集テキストは「完了」)を変更し、次に2番目のタップはキーボードを非表示にします。 これは、それが最初のタップによって起こるものです:

What the first tap does.

今、私は2つの質問があります:私はちょうど1タップでそれと非表示のキーボードを修正するにはどうすればよい

1-?

2すべての編集テキスト(すべてのコードを1つ)にすることは可能ですか?

ありがとうございます。

答えて

7

onClickonTouchに置き換えてください。このために、あなたのレイアウトを変更する必要があり、このように属性:

<RelativeLayout 
    android:id="@+id/relativeLayout" 
    android:clickable="true" 
    android:focusable="true" 
    android:focusableInTouchMode="true"> 

    <RelativeLayout> 

     // widgets here 

    </RelativeLayout> 

</RelativeLayout> 

次にrl_main_onClick(View view) {...}メソッドを削除し、onCreate()の内部onTouchリスナーメソッドを挿入します。

findViewById(R.id.relativeLayout).setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
     return true; 
    } 
}); 
関連する問題