web-dev-qa-db-fra.com

Le clavier n'est pas affiché dans l'Android Pie (API-28)

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?

5
Elnatan Derech

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();
13
Viraj Patel

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" />
0
Dmitriy Pavlukhin

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.

0
Arieck