2011-01-21 23 views
7

Questo codice non sembra funzionare in modalità orizzontale:Mostra tastiera virtuale quando il dispositivo è in modalità paesaggio

EditText destinationSearch = (EditText) findViewById(R.id.destinationSearch); 

destinationSearch.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE);
imm.showSoftInput (destinationSearch, InputMethodManager.SHOW_IMPLICIT);

C'è qualche soluzione per mostrare la tastiera virtuale in modalità orizzontale?

+0

sembra funzionare con la bandierina SHOW_FORCE: D – andreea

risposta

10

è necessario utilizzare spettacolo costretto

InputMethodManager imm; 
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY); 
imm.showSoftInput(this.editText,InputMethodManager.SHOW_FORCED); 
+0

Perché avete bisogno di toggleSoftInput con HIDE_IMPLICIT_ONLY? –

1

La ragione è che la modalità orizzontale il più delle volte messo tastiera virtuale in una nuova finestra a schermo intero. Come ha detto Bakih, la forza funzionerà, ma la finestra a schermo intero ha più effetti e così fa SHOW_FORCED.

preferisco aggiungere

<item name="android:imeOptions">flagNoFullscreen</item> 

al mio EditTextStyle modo che io possa sempre cogliere onGlobalLayout() e così via. Ora puoi usare SHOW_IMPLICIT. Assicurati che l'interfaccia utente sia a posto in un'area così piccola e rimuovi la correzione automatica se non è necessaria.

0
EditText editText = (EditText)findViewById(R.id.editText); 

editText.setFocusableInTouchMode(false); 

final Context context = this; 

editText.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     v.requestFocusFromTouch(); 

     InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.showSoftInput(v, InputMethodManager.SHOW_FORCED); 

    } 
}); 
+2

Potresti trovare utile aggiungere una spiegazione alla tua risposta in modo che i lettori possano capire perché la tua risposta è la migliore, piuttosto che solo il codice postale. Puoi aggiungere alla tua risposta premendo il tasto "modifica". –

Problemi correlati