2010-06-14 71 views
26

Trong ứng dụng Android, bất cứ khi nào hoạt động khởi chạy, hộp văn bản sẽ lấy tiêu điểm và bàn phím mềm bật lên tự động. Tôi đã cố gắng để ngăn chặn điều này bằng cách sử dụng dòng sau trong phương pháp onCreate, nhưng nó không hoạt động.Làm thế nào để giữ bàn phím mềm mở khi khởi động hoạt động trong Android?

((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(EditText.getWindowToken(), 0); 

Trả lời

91

Tôi biết điều này là cũ nhưng có lẽ nó sẽ giúp một người nào đó trong tương lai ...

Tôi chưa thấy ai đề nghị "stateHidden"

From the Android docs - android:windowSoftInputMode

file manifest của bạn sẽ trông giống như:

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

điều này đơn giản hơn về phía trước. – Robert

2

Công việc sau có hoạt động không?

// Find editor 
EditText editWindowInstance = this.findViewById(R.id.MyEditWindow); 

// close soft keyboard 
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(editWindowInstance.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
+0

Không, nó không hoạt động. – Adnan

+0

Làm thế nào về việc sử dụng "hideSoftInputFromWindow (editWindowInstance, ...)" thay vì "editWindowInstance.getWindowToken()"? –

18

Bạn có thể sử dụng dòng mã sau đây để đảm bảo bàn phím chỉ bật lên khi người dùng nhấp vào một EditText

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

Bạn cần phải thêm

android: windowSoftInputMode = "adjustResize"

vào thẻ hoạt động của bạn trong tệp AndroidManifest.xml.

+0

Tác phẩm này hoạt động, nhưng khi tôi nhấp vào hộp văn bản để nhập, bàn phím bật lên trên hộp văn bản, tôi không thể thấy nội dung tôi đang nhập. Hộp văn bản nằm ở cuối màn hình. – Adnan

+0

Bạn cần thêm android: windowSoftInputMode = "adjustResize" vào thẻ của mình trong tệp AndroidManifest.xml. –

+0

android: windowSoftInputMode = "adjustResize" được đặt trong AndroidManifest.xml nhưng vẫn cùng một vấn đề. Có một nút trong cùng một màn hình. Tôi đã cố di chuyển tiêu điểm đến nút bằng cách sử dụng: btn.setFocusable (đúng); btn.requestFocus(); Nhưng vẫn tập trung vào TextView. Tôi không biết mình đang làm gì sai. – Adnan

0

Các mã sau đây làm việc cho tôi

((InputMethodManager) iClockActivity 
        .getSystemService(Context.INPUT_METHOD_SERVICE)) 
        .showSoftInput(textView, 0); 
+0

Tôi đã thử điều này, nhưng vẫn còn cùng một vấn đề. – Adnan

0

này sẽ làm việc một cách hoàn hảo, hãy thử này

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

Và thêm dòng sau vào biểu hiện của bạn.

android:windowSoftInputMode="stateHidden|adjustResize" 

cổ vũ thưởng thức mã hóa ....

1

Bạn có thể đặt mã này trong Activity.onCreate của bạn:. this.getWindow() setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Nhưng tôi thấy rằng cách đáng tin cậy nhất và sạch sẽ là chỉ cần đặt trọng tâm vào đến một cái nhìn khác nhau, trong hoạt động XML Layout bạn

<Button 
    android:id="@+id/mybutton"> 
    <requestFocus /> 
</Button> 
Các vấn đề liên quan