• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

Android: gestire la tastiera software mediante InputMethodManager

By Giuseppe Maggi | on 6 Febbraio 2018 | 1 commento
Android

In Android, siamo abituati a vedere apparire una tastiera software all’atto di assegnare il focus ad una EditText per permetterci di digitare caratteri. Ciò avviene in automatico ma può essere utile saper esplicitamente invocare la sua apertura o chiusura: per questo, vediamo come funziona l’InputMethodManager

Qualora volessimo chiudere la tastiera software potremmo utilizzare le seguenti righe di codice:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(findViewById(R.id.activity_main).getWindowToken(), 0);

Con la prima riga, richiediamo il collegamento all’InputMethodManager che consiste in un servizio di sistema, con la seconda richiediamo esplicitamente di nascondere la tastiera. Si noti che il metodo hideSoftInputFromWindow riceve due parametri in input:

  • un WindowToken che consiste in un identificativo univoco alla finestra. Per ottenerlo è sufficiente richiederlo ad una View ad essa collegata. Qui abbiamo supposto di avere un layout con id R.id.activity_main ma, come si può immaginare, l’oggetto View su cui eseguire l’invocazione dovrà essere scelto in base al proprio progetto;
  • il secondo è un campo per un flag che può valere 0 o essere impostato al valore HIDE_IMPLICIT_ONLY che specifica che la tastiera andrebbe chiusa solo se non esplicitamente invocata dall’utente.

Esiste comunque un metodo per gestire apertura e chiusura della tastiera software, toggleSoftInputFromWindow, da usare nel modo seguente:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInputFromWindow(
                findViewById(R.id.activity_main).getApplicationWindowToken(),
                InputMethodManager.SHOW_FORCED, 0);

Anche qui il primo parametro del metodo toggleSoftInputFromWindow è un WindowToken mentre successivamente possiamo ospitare due flag: uno per quanto riguarda l’apertura, uno per la chiusura. Come flag di apertura, si può usare 0 o i valori SHOW_IMPLICIT (l’azione non è esplicita richiesta dell’utente) e SHOW_FORCED (la  tastiera non deve essere richiusa senza esplicita richiesta dell’utente). Per la chiusura, i flag possibili sono HIDE_IMPLICIT_ONLY (come sopra) e HIDE_NOT_ALWAYS (dovrebbe normalmente essere chiusa a meno che non aperta con SHOW_FORCED) oltre al valore neutro 0.

Impostando, ad esempio, entrambi i flag a 0, il metodo toggleSoftInputFromWindow  implementerebbe una sorta di interruttore per la tastiera permettendo di aprirla e chiuderla a comando. Qualora utilizzassimo invece SHOW_FORCED per l’apertura e HIDE_NOT_ALWAYS per la chiusura la tastiera verrebbe aperta con il metodo toggleSoftInputFromWindow  ma potrebbe solo essere richiusa su richiesta esplicita dell’utente.

Vi è mai capitato di sentire il bisogno di gestire direttamente la tastiera ? Provate questi metodi e fateci sapere cosa ne pensate!

Share this story:
  • tweet

Tags: androidinput utenteinputmethodmanagersoftware keyboadsviluppo androidTutorial Pratici

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • IntelliJ IDEA: IDE per programmare in Java e Kotlin

    25 Luglio 2018 - 0 Comment
  • Android: usare Connect Pattern

    10 Luglio 2018 - 0 Comment
  • Android: il metodo findViewById() non richiede più il cast

    21 Giugno 2018 - 0 Comment

Author Description

One Response to “Android: gestire la tastiera software mediante InputMethodManager”

  1. 3 Aprile 2020

    Massimiliano

    Come è dove si modifica il tutto ?

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO