2013-08-14 26 views
10

Tôi có EditText mà tôi đang chuyển tiêu điểm thành lập trình. Nhưng khi tôi làm thế, tôi cũng muốn bàn phím hiển thị (và sau đó đi xuống khi EditText đó mất tập trung). Ngay bây giờ, người dùng phải bấm vào EditText để có được bàn phím để hiển thị - thậm chí nghĩ rằng EditText đã có tiêu điểm.buộc bàn phím mềm hiển thị khi EditText được lấy nét

Trả lời

15

Đây là cách tôi thể hiện ketyboard:

EditText yourEditText= (EditText) findViewById(R.id.yourEditText); 
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT); 
+9

này thực sự hoạt động. Tuy nhiên, trước tiên bạn phải 'requestFocus()' vào EditText, sau đó mở bàn phím, nó không hoạt động theo thứ tự ngược lại. – gaborsch

+1

1+ cho nhận xét @GaborSch. Cảm ơn. –

6

Để hiển thị bàn phím, sử dụng đoạn mã sau.

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT); 

Để ẩn bàn phím, hãy sử dụng mã bên dưới. et là tham chiếu đến EditText

InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(et.getWindowToken(), 0); 
0

Để làm điều đó dựa trên tập trung nghe bạn nên đi cho:

final InputMethodManager imm =(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE); 
editText.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(hasFocus){ 
       imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT); 
      }else{ 
       imm.hideSoftInputFromWindow(et.getWindowToken(), 0); 
      } 
      imm.toggleSoftInput(0, 0); 
     } 
    }); 

Hope this helps.

Trân trọng!

22
<activity android:name=".YourActivity" 
      android:windowSoftInputMode="stateVisible" /> 

Thêm này để biểu thị tập tin ...

+0

Cái này hoạt động, cảm ơn.) Trong tình huống của tôi, một hoạt động sẽ tập trung khi nó mở ra (cấu hình trên không có trong tệp kê khai). Các hoạt động khác mà cùng một mã và thiết kế không cho đến khi tôi thêm này, ở trên để biểu hiện: /. Thật kỳ lạ là tôi không thể hiểu tại sao. –

6

bộ này cho hoạt động của bạn trong manifest để bật bàn phím tự động khi màn hình của bạn đi kèm chứa EditText hộp

<activity android:windowSoftInputMode="stateAlwaysVisible" ... /> 

Để ẩn bàn phím trên thua tập trung đặt OnFocusChangeListener cho EditText.

Trong onCreate()

EditText editText = (EditText) findViewById(R.id.textbox); 
OnFocusChangeListener ofcListener = new MyFocusChangeListener(); 
editText.setOnFocusChangeListener(ofcListener); 

Thêm lớp này

private class MyFocusChangeListener implements OnFocusChangeListener { 

    public void onFocusChange(View v, boolean hasFocus){ 

     if(v.getId() == R.id.textbox && !hasFocus) { 

      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(v.getWindowToken(), 0); 

     } 
    } 
}