Domanda

ho voluto un tastierino numerico che aveva un viaggio o pulsante di fatto chiuso ed eseguito una classe di calcolo. Grazie ad una punta da commonware su dove iniziare ho ottenuto questo lavorando splendidamente sull'emulatore. Poi sono venuto a caricarlo sul mio HTC desiderio di testare e non funziona affatto. Sono sicuro che deve essere a causa di HTC senso avere un proprio ime, ma ci deve essere sicuramente un modo per fare questo lavoro sui telefoni HTC? Chiunque altro è riuscito ad ottenere questo problema?

È stato utile?

Soluzione

I grado di replicare quello che penso che state vedendo sul HTC Incredible.

Non tutte le tastiere molli sosterranno il pulsante di azione IME. Alcuni, come il Graffiti soft "tastiera", potrebbero non avere alcuna pulsanti a tutti, per non parlare di un pulsante di azione IME. Anche il Compatibility Definition Document dice nulla su che richiede un tale pulsante di azione per le tastiere in dotazione con un dispositivo.

Quindi, non si deve fare affidamento sul pulsante di azione IME. Se è lì, gli utenti possono usarlo. Tuttavia, hanno sempre qualche altro mezzo per realizzare qualunque sia il vostro obiettivo è quello.

Altri suggerimenti

Io sono rilevare se il pulsante DONE / GO / RETURN è stato premuto utilizzando un onEditorActionListener, ma il controllo di opzioni IME e KeyEvents a tastiere copertura HTC nonché degli eventuali tastiere che accettano opzioni IME.

(Questo codice funziona per HTC Incredible tastiere e qualsiasi tastiera che dispone di opzioni 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;
        }
    }
});

usavo un EditText con InputType = "numero" e risolto il problema modificando soluzione 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;
            }
        }
    };

La messa a fuoco è stato rimosso al fine di interrompere la visualizzazione del tastierino numerico. L'imm era necessario perché una tastiera software era ancora presente anche dopo la messa a fuoco di compensazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top