2010-06-14 21 views
26

W aplikacji na Androida, po uruchomieniu działania pole tekstowe staje się aktywne, a klawiatura ekranowa jest automatycznie wyświetlana. Próbowałem to zatrzymać, używając następującej linii w metodzie onCreate, ale to nie działa.Jak zachować miękką klawiaturę przed otwarciem podczas uruchamiania aktywności w systemie Android?

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

Odpowiedz

91

wiem, że to jest stary, ale może to pomoże komuś w przyszłości ...

Nie widziałem ktoś sugerują „stateHidden”

From the Android docs - android:windowSoftInputMode

Twój plik manifestu wyglądałby następująco:

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

jest to prostsze prosto. – Robert

2

Czy następują następujące czynności?

// 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

Nie, to nie działa. – Adnan

+0

Co powiesz na użycie "hideSoftInputFromWindow (editWindowInstance, ...)" zamiast "editWindowInstance.getWindowToken()"? –

18

Można użyć następującego wiersza kodu, aby upewnić się, że klawiatura wyskakuje tylko wtedy, gdy użytkownik kliknie na na EditText

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

I

Trzeba dodać

android: windowSoftInputMode = "adjustResize"

do tagu aktywności w pliku AndroidManifest.xml.

+0

To działa, ale gdy kliknę pole tekstowe w celu pisania, klawiatura pojawia się nad polem tekstowym i nie widzę tego, co piszę. Pole tekstowe znajduje się u dołu ekranu. – Adnan

+0

Musisz dodać android: windowSoftInputMode = "adjustResize" do tagu w pliku AndroidManifest.xml. –

+0

android: windowSoftInputMode = "adjustResize" jest ustawione w AndroidManifest.xml, ale wciąż ten sam problem. Na tym samym ekranie znajduje się przycisk. Próbowałem przenieść fokus na przycisk za pomocą: btn.setFocusable (true); btn.requestFocus(); Ale nadal nacisk kładzie się na TextView. Nie wiem, co robię źle. – Adnan

0

Poniższy kod działa dla mnie

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

Próbowałem tego, ale wciąż ten sam problem. – Adnan

0

To działa doskonale, spróbuj tego

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

i dodaj następujące do manifestu.

android:windowSoftInputMode="stateHidden|adjustResize" 

okrzyki cieszyć kodowania ....

1

Możesz umieścić ten kod w swoim Activity.onCreate. this.getWindow() setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Ale okazało się, że najbardziej wiarygodne i czyste sposobem było po prostu ustawić ostrość na na inny widok, w swojej działalności XML Układ

<Button 
    android:id="@+id/mybutton"> 
    <requestFocus /> 
</Button> 
Powiązane problemy