Question

Je voulais un clavier numérique qui a eu un feu ou un bouton fait cela fermé et exécuté une classe de calcul. Merci à une pointe de commonware où commencer je suis arrivé ce travail magnifique sur l'émulateur. Ensuite, je suis venu pour le charger sur mon désir de HTC pour tester et il ne fonctionne pas du tout. Je suis sûr que ce doit être à cause du sens de HTC ayant son propre ime mais il doit sûrement être un moyen de faire ce travail sur les téléphones HTC? Tout le monde a réussi à autre de contourner ce problème?

Était-ce utile?

La solution

Je peux reproduire ce que je pense que vous voyez sur le HTC Incredible.

Pas tous les claviers souples soutiendront le bouton d'action IME. Certains, comme le « clavier » de doux Graffiti, peut avoir aucun bouton du tout, et encore moins un bouton d'action IME. Même le document Définition Compatibilité ne dit rien nécessitant un tel bouton d'action pour les claviers fournis avec un appareil.

conséquent, vous devez pas compter sur le bouton d'action IME. Si elle est là, les utilisateurs peuvent l'utiliser. Cependant, ont toujours un autre moyen d'accomplir votre objectif est tout.

Autres conseils

Je détecte si le bouton DONE / GO / RETOUR a été appuyé à l'aide d'un onEditorActionListener, mais la vérification des options et KeyEvents à ÉMI couverture des claviers HTC, ainsi que tous les claviers qui acceptent les options IME.

(Ce code fonctionne pour HTC Incredible claviers et tout clavier qui a des options IME)

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

J'utilisais un EditText avec inputType = « nombre » et résolu le problème en modifiant la solution Asha:

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

L'accent a été retiré afin d'arrêter de montrer le pavé numérique. Le imm était nécessaire parce qu'un clavier mou était toujours présent, même après mise au point de compensation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top