2015-01-13 1 views
6

Ich habe eine Webansicht, in der ich die Tastatur manuell auf dem Anmeldebildschirm zeige und mich auf das Eingabefeld konzentriere.Numerische Tastatur in einem WebView anzeigen

Field:

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

Focus und zeigen Tastatur:

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); 

Der Anmeldebildschirm besteht aus nur einem PIN-Stil-Code-Feld, wo der Benutzer 4 Ziffern eingeben werden. Das Problem ist, dass standardmäßig die normale alphanumerische Tastatur angezeigt wird und stattdessen die numerische Tastatur angezeigt werden soll. Ich habe viele Beispiele für die Verwendung der Eigenschaften eines EditText gesehen, um den Tastaturtyp zu steuern, z.

Aber ist es möglich, der Tastatur selbst zu sagen, welcher Typ das Attribut auf dem WebView anzeigen oder einstellen soll?

+0

Haben Sie eine Lösung gefunden? –

+0

Ich habe keine Lösung gefunden. –

Antwort

5

Diese Route funktionierte für mich. Erstellen Sie eine Unterklasse von WebView, und überschreiben Sie die Methode onCreateInputConnection. Diese Methode wird aufgerufen, wenn ein Eingabefeld in der WebView ausgewählt ist, und Sie können anpassen, wie das Ereignis behandelt wird. Hier ein Beispiel:

0

Mit dem Code die andere Antwort schlägt vor, funktioniert gut in meinem Gerät (Galaxy S4) und dem Emulator. Wenn Sie die App jedoch in einem anderen HTC-Gerät ausführen, funktionieren die Zifferntasten nicht.

Ändern Sie den Code auf die folgenden:

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

auf allen Geräten gearbeitet ich habe.