Frage

wollte ich eine numerische Tastatur, die einen Sprung oder done Knopf hatte, dass geschlossen und eine Berechnungs Klasse ausgeführt. Dank einer Spitze von commonware auf, wo ich anfangen bekam dieses schön auf dem Emulator arbeiten. Dann kam ich laden auf meinen HTC Wunsch zum Testen und es nicht funktioniert überhaupt nicht. Ich bin sicher, muss es wegen der HTC Sinn sei es die eigene ime haben, aber es muss doch eine Möglichkeit geben, diese Arbeit auf HTC-Geräte zu machen? Noch jemand geschafft, dieses Problem zu umgehen?

War es hilfreich?

Lösung

Ich kann wiederholen, was ich denke, Sie auf dem HTC Incredible sehen.

Nicht alle Soft-Tastaturen werden die IME Aktionstaste unterstützen. Einige, wie das Graffiti Soft „-Tastatur“, haben keine Tasten überhaupt, geschweige denn eine IME Aktionstaste. Auch der Compatibility Definition Document nichts sagt über erfordert eine solche Aktion Taste für die mit einer Kette und Tastaturen Gerät.

Daher sollten Sie nicht auf die IME Aktionstaste verlassen. Wenn es da ist, kann der Benutzer es verwenden. Jedoch immer einige andere Mittel zur Erreichung haben, was Ihr Ziel ist.

Andere Tipps

Ich Erkennen, ob die DONE / GO / RETURN-Taste einen onEditorActionListener gedrückt wurde verwendet, aber die Überprüfung für IME-Optionen und KeyEvents zu Abdeckung HTC Tastaturen sowie alle Tastaturen, die IME-Optionen zu akzeptieren.

(Dieser Code funktioniert für HTC Incredible Tastaturen sowie jede Tastatur, die IME Optionen hat)

EditText.setOnEditorActionListener(new TextView.OnEditorActionListener(){
    public boolean onEditorAction(TextView exampleView, int actionId, KeyEvent event){
        if(actionId == EditorInfo.IME_ACTION_DONE 
            || actionId == EditorInfo.IME_NULL
            || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){

            //Do something in here
            return true;
        } else {
            return false;
        }
    }
});

ich wurde mit einem EditText mit input = „number“ und löste das Problem durch Asha-Lösung zu modifizieren:

private TextView.OnEditorActionListener numberEnterListener = new TextView.OnEditorActionListener(){
        public boolean onEditorAction(TextView tv, int actionId, KeyEvent event){
            if(actionId == EditorInfo.IME_ACTION_DONE 
                || actionId == EditorInfo.IME_NULL
                || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){

                tv.clearFocus();

                //Stupid keyboard needs to be closed as well
                InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(tv.getWindowToken(), 0);

                return true;
            } else {
                return false;
            }
        }
    };

Der Fokus wurde entfernt, um den Ziffernblock zu stoppen zeigt. Die imm erforderlich war, weil eine Soft-Tastatur auch noch nach Lichtung Fokus vorlag.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top