2015-01-13 14 views
6

Mam widok internetowy, w którym ręcznie wyświetlam klawiaturę na ekranie logowania i koncentruję się na polu wprowadzania.Pokaż klawiaturę numeryczną w WebView

Pole:

<input type="password" maxlength="4" pattern="[0-9]*" id="pin"> 

ostrości i pokaż klawiaturę:

webView.requestFocus(View.FOCUS_DOWN); 
webView.loadUrl("javascript:document.getElementById('pin').focus();"); 
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(webView, InputMethodManager.SHOW_IMPLICIT); 

ekran logowania składa się tylko z kodem PIN dziedzinie stylu, gdzie użytkownik wejdzie 4 cyfry. Problem polega na tym, że domyślnie pokazuje zwykłą klawiaturę alfa i chcę, aby wyświetlała ona klawiaturę numeryczną. Widziałem wiele przykładów użycia właściwości EditText do sterowania typem klawiatury, np.

InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
EditText.setInputType(InputType.TYPE_CLASS_PHONE); [select Input type as according to ur requirement] 
mgr.showSoftInput(EditText, InputMethodManager.SHOW_IMPLICIT); 

Ale czy można powiedzieć samej klawiaturze, jaki typ wyświetlić lub ustawić atrybut w WebView?

+0

znalazłeś rozwiązanie tego problemu? –

+0

Nie znalazłem rozwiązania. –

Odpowiedz

5

Ta trasa działała dla mnie. Utwórz podklasę o wartości WebView i zastąp metodę onCreateInputConnection. Ta metoda jest wywoływana, gdy wybrane jest pole wejściowe w WebView i daje możliwość dostosowania sposobu obsługi zdarzenia. Oto przykład:

@Override 
public InputConnection onCreateInputConnection(EditorInfo outAttrs) { 
    BaseInputConnection ic = new BaseInputConnection(this, true); 
    outAttrs.inputType = InputType.TYPE_CLASS_NUMBER; // Tells the keyboard to show the number pad 
    return ic; 
} 
0

Korzystanie z kodu sugeruje inna odpowiedź, działa dobrze w moim urządzeniu (Galaxy S4) i emulatorze. Jednak podczas uruchamiania aplikacji w innym urządzeniu HTC klawisze numeryczne nie działają.

Zmień kod do następujących:

@Override 
public InputConnection onCreateInputConnection(EditorInfo outAttrs) { 
    InputConnection ic = super.onCreateInputConnection(outAttrs); 
    outAttrs.inputType = InputType.TYPE_CLASS_NUMBER; 
    return ic; 
} 

pracował na wszystkich urządzeniach mam.

Powiązane problemy