2013-09-24 46 views
109

Tôi có Edittext với android:windowSoftInputMode="stateVisible" trong Tệp kê khai. Bây giờ bàn phím sẽ được hiển thị khi tôi bắt đầu hoạt động. Làm thế nào để ẩn nó? Tôi không thể sử dụng android:windowSoftInputMode="stateHidden vì khi bàn phím hiển thị, sau đó thu nhỏ ứng dụng và tiếp tục, bàn phím sẽ hiển thị. Tôi đã thử vớiCách ẩn Bàn phím mềm khi hoạt động bắt đầu

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

nhưng nó đã không làm việc.

Trả lời

175

Sử dụng các chức năng sau để hiển thị/ẩn bàn phím:

/** 
* Hides the soft keyboard 
*/ 
public void hideSoftKeyboard() { 
    if(getCurrentFocus()!=null) { 
     InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 
     inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
    } 
} 

/** 
* Shows the soft keyboard 
*/ 
public void showSoftKeyboard(View view) { 
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 
    view.requestFocus(); 
    inputMethodManager.showSoftInput(view, 0); 
} 
+4

Ngữ cảnh.INPUT_METHOD_SERVICE cho những người đang ở trong phân đoạn hoặc không có trong hoạt động chính, v.v. –

+1

Không hoạt động trên Nexus 6P Android 6.0.1. – GeneralKimi

+0

@GeneralKimi: Tôi cũng thích sự cố của bạn –

276

Trong AndroidManifest.xml:

<activity android:name="com.your.package.ActivityName" 
     android:windowSoftInputMode="stateHidden" /> 

hoặc thử

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)‌​; 

Vui lòng kiểm tra this cũng

+1

bạn đã thử với getWindow(). SetSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); – Neenu

+2

Cảm ơn 'android: windowSoftInputMode =" stateHidden "' –

+1

Thực tế cũng có câu trả lời tuyệt vời về việc ngăn chặn tập trung vào văn bản chỉnh sửa http://stackoverflow.com/questions/4668210/automatic-popping-up-keyboard-on-start- hoạt động –

20

Hãy thử điều này:

<activity 
    ... 
    android:windowSoftInputMode="stateHidden|adjustResize" 
    ... 
> 

Nhìn vào this một để biết thêm chi tiết.

1

Hãy thử này cũng

Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories); 

Ed_Cat_Search.setInputType(InputType.TYPE_NULL); 

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT); 
     Ed_Cat_Search.onTouchEvent(event); // call native handler 
     return true; // consume touch even 
    } 
}); 
10

Để ẩn softkeyboard tại thời điểm Hoạt động mới bắt đầu hoặc onCreate(), onStart() vv bạn có thể sử dụng đoạn mã sau:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
4

Thêm văn bản sau đây vào tệp xml của bạn.

<!--Dummy layout that gain focus --> 
      <LinearLayout 
       android:layout_width="0dp" 
       android:layout_height="0dp" 
       android:focusable="true" 
       android:focusableInTouchMode="true" 
       android:orientation="vertical" > 
      </LinearLayout> 
2

Đặt mã này file java của bạn và vượt qua các đối số cho đối tượng trên EditText,

private void setHideSoftKeyboard(EditText editText){ 
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); 
} 
1

Đây là những gì tôi đã làm:

yourEditText.setCursorVisible(false); //This code is used when you do not want the cursor to be visible at startup 
     yourEditText.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       v.onTouchEvent(event); // handle the event first 
       InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
       if (imm != null) { 

        imm.hideSoftInputFromWindow(v.getWindowToken(), 0); // hide the soft keyboard 
        yourEditText.setCursorVisible(true); //This is to display cursor when upon onTouch of Edittext 
       } 
       return true; 
      } 
     }); 
1

Hãy thử điều này.

Đầu tiên trong trường có thể tìm kiếm của bạn xml các trường (tên và gợi ý, v.v.) đặt @string chứ không phải chuỗi ký tự bằng chữ.

Sau đó, phương pháp onCreateOptionsMenu, nó phải có một đối tượng ComponentName với tên của bạn gói và tên lớp hoàn thành của bạn (với tên gói) - Trong hoạt động trường hợp trong đó có các thành phần SearchView là giống như các chương trình kết quả tìm kiếm sử dụng getComponentName(), như nhà phát triển google android nói.

Tôi đã thử rất nhiều giải pháp và sau nhiều, nhiều công việc mà giải pháp này làm việc cho tôi.

28

Chỉ cần thêm hai thuộc tính vào chế độ xem gốc của editText.

android:focusable="true" 
android:focusableInTouchMode="true" 
+0

Mẹo tuyệt vời +1. – Ironman

4

Tôi hy vọng điều này sẽ làm việc, tôi đã cố gắng rất nhiều phương pháp nhưng điều này đã làm việc cho tôi trong fragments. chỉ cần đặt dòng này trong onCreateview/init.

getActivity().getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
2

Bạn có thể thiết lập cấu hình trên AndroidManifest.xml

Ví dụ:

<activity 
    android:name="Activity" 
    android:configChanges="orientation|keyboardHidden" 
    android:theme="@*android:style/Theme.NoTitleBar" 
    android:launchMode="singleTop" 
    android:windowSoftInputMode="stateHidden"/> 
23

Đặt này trong biểu hiện bên trong tag Hoạt động

android:windowSoftInputMode="stateHidden" 
1

Sử dụng đoạn mã sau để Ẩn phím chức năng lần đầu tiên khi bạn bắt đầu Hoạt động

getActivity().getWindow().setSoftInputMode(WindowManager. 
LayoutParams.SOFT_INPUT_STATE_HIDDEN); 
Các vấn đề liên quan