Je souhaite afficher le clavier de l'appareil lorsque je parviens à l'écran de connexion par courrier électronique.
J'ai déclaré la windowSoftInputMode
à "stateVisible"
dans le fichier AndroidManifest.xml :
<activity
Android:name=".activities.EmailLoginActivity"
Android:launchMode="singleTask"
Android:screenOrientation="portrait"
Android:windowSoftInputMode="stateVisible" />
J'ai suivi cette documentation .
Résultats:
Sur les appareils exécutant l'API Android jusqu'à 27 ans, le clavier est affiché.
Sur les appareils qui exécutent l'API Android 28, le clavier n'est pas affiché.
Est-ce un bug dans Android Pie?
Toute suggestion?
Semble dans Android Pie (API 28), il ne définit pas le focus de la demande dans EditText
automatiquement.
Vous devez donc définir la requestFocus
de votre EditText
soit par programme, soit dans le fichier XML.
your_layout.xml
<EditText
Android:id="@+id/et_email"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_marginTop="@dimen/_20sdp"
Android:inputType="textEmailAddress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<requestFocus />
</EditText>
OU
your_activity.Java
findViewById(R.id.et_email).requestFocus();
Si vous utilisez EditText caché avec une largeur et une hauteur de 0dp, cela ne fonctionnera pas avec l'API 28 pie, je pouvais le faire fonctionner en définissant les dimensions sur 1dp et toutes les parties du widget sur transparent. Cela a fonctionné pour moi :
<EditText
Android:id="@+id/hacked_edit_text"
Android:layout_width="1dp"
Android:layout_height="1dp"
Android:background="@Android:color/transparent"
Android:cursorVisible="false"
Android:textColor="@Android:color/transparent" />
J'ai aussi eu un problème avec Android Pie. .requestFocus()
n'a pas fonctionné pour moi.
Solution à mon problème:
Assurez-vous que votre EditText
est réellement visible. J'ai utilisé la EditText
comme champ masqué, et le clavier ne s'est affiché qu'après le réglage de la largeur et de la hauteur de 0
à 1dp
.