2012-02-16 18 views
10

Moim celem jest pokazywanie/ukrywanie klawiatury programowej na ekranie w przypadku niektórych zdarzeń i przechwytywania danych wejściowych z klawiatury.Pokaż klawiaturę oprogramowania bez EditText

Dowiedziałem się, że dla niektórych potomków klasy View może być wyświetlana klawiatura ekranowa, ale nie potrzebuję żadnej wizualnej reprezentacji widżetu edycji tekstu na ekranie, a jedynie zdolność do programowego wyświetlania ukrytej klawiatury z przechwytywaniem danych wejściowych.

Jaki jest najlepszy sposób, aby to osiągnąć?

Odpowiedz

3

Można wymusić Softkeyboard być przedstawione za pomocą:

InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED); 

i ukrywać:

((InputMethodManager) YourActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(findViewById(R.id.YOUR_VIEW).getWindowToken(), 0); 
+0

Ta metoda nie działa. showSoftInput zwraca wartość false i żadna klawiatura nie jest wyświetlana – Nekuromento

+0

powinna działać, ale możesz wypróbować następującą linię: im.showSoftInput (this, InputMethodManager.SHOW_IMPLICIT); – Vikram

15

Nawet jeśli to pytano prawie rok temu nie miał akceptowaną i w pełni pomocna odpowiedź, a ponieważ sam wpadłem na ten sam problem, chciałem podzielić się moim rozwiązaniem:

Jak zauważył Vikram, jest to sposób na pokazanie miękkiego wejścia:

InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED); 

ALE należy również ustawić widok jak aktywowana i aktywowana w trybie dotykowym:

myView.setFocusable(true); 
myView.setFocusableInTouchMode(true); 

lub w widoku XML:

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

Jak przechwycić wejście klawiatury? – bgolson

+1

Musisz być trochę bardziej konkretny. Przechwycić w jaki sposób? Można zastąpić View.onKeyDown (int keyCode, zdarzenie KeyEvent). Czy o to Ci chodziło? – britzl

+0

+1 Dzięki! Tego właśnie szukałem. – bgolson

2

Właściwie możesz always pokaż miękkie wejście klawiatury z manifestu. dodać tę linię do każdego rodzaju działalności, który chcesz wyświetlić klawiaturę:

android:windowSoftInputMode="stateAlwaysVisible" 

klawiatura pojawi się bez względu na to, czy nie ma EditText w widoku. przykład:

<activity android:name=".ChatActivity" 
    android:windowSoftInputMode="stateAlwaysVisible"> 

</activity> 
Powiązane problemy