Texte édité caché sur le clavier lorsque android: windowTranslucentStatus=true

nous appliquons le nouveau thème Android KitKat translucide dans nos applications, et nous avons un problème bizarre lorsque le clavier apparaît. Si nous n'utilisons pas le nouvel attribut android:windowTranslucentStatus , tout fonctionne comme d'habitude: l'écran est redimensionné, et tout reste visible. Mais quand nous utilisons android:windowTranslucentStatus , l'écran n'est pas redimensionné et notre EditText devient caché par le clavier.

un échantillon de l'émission: http://fewlaps.com/xtra/quitnowStackoverflow.png

la seule différence entre les écrans se trouve l'attribut dans le style:

premier écran: <item name="android:windowTranslucentStatus">false</item>

Deuxième écran: <item name="android:windowTranslucentStatus">true</item>

nous pensons que c'est un bug de la version Kitkat, mais nous voulons que vous en soyez conscient. Nous sommes un peu fou. Bien sûr, si quelqu'un a une solution, il sera étonnant.

EDIT: je viens d'ajouter ce numéro à L'Android issue tracker. Probablement vous serez intéressé par mettant en vedette le issue: https://issuetracker.google.com/issues/36986276

32
demandé sur Vishnu Haridas 2013-11-11 05:17:48

6 réponses

j'ai aussi rencontré cette question très ennuyeuse. Mais finalement, j'ai obtenu ce travail:

<style name="Theme.MyApp">
    <item name="android:windowTranslucentStatus">true</item>
</style>

au lieu de définir fitSystemWindows=" true " dans le thème, je l'ai placé sur la vue racine de ma mise en page..

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fitsSystemWindows="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</FrameLayout>

j'utilise aussi le grand SystemBarTintManager dans mon activité:

new SystemBarTintManager(this).setStatusBarTintEnabled(true);

cela semble bien fonctionner, mais il est vrai que cela semble assez inconstant. J'espère que ça aidera quelqu'un de toute façon!

8
répondu DanielGrech 2014-01-20 22:35:56

une solution serait:

ajoutez une touche ou un Focus ou un ClickListener et déplacez la mise en page EditText jusqu'à la moitié de l'écran. Toutefois, ce n'est vraiment pas la façon dont il devrait fonctionner, alors croisez les doigts et espérons que Google devient fixe.

EditText e = new EditText(this);
    e.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus)
                v.animate().x(screenHeight/2f).start();
            else
                v.animate().x(screenHeight).start();
        }
    });

ajustez juste v à votre disposition de maintien et assurez-vous que les positions que vous déplacez pour bien paraître.

0
répondu bluewhile 2013-11-11 02:35:45

mettez ceci en dessous des lignes après avoir créé en vous l'activité

    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        Window window = this.getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.setStatusBarColor(mCategoryColors.getColorStatusBar());
    }

travailler pour moi:)

0
répondu Prashant Maheshwari Andro 2015-09-24 09:14:34

ce n'est pas une solution parfaite mais une solution que j'ai trouvée était de mettre android:windowSoftInputMode="adjustPan" dans AndroidManifest.xml .

notez que cela va balayer toute la fenêtre hors du chemin du clavier, plutôt que de la redimensionner.

Plus d'infos ici (de la recherche pour windowSoftInputMode ).

0
répondu Matt Lyons 2016-01-11 04:31:52

set android:windowSoftInputMode="adjustPan" dans AndroidManifest.xml est ok. Mais je veux juste dire que cela ne fonctionne pas quand l'activité est FullScreen, pour plus de détails voir Android Comment ajuster la mise en page en Mode plein écran quand softkeyboard est visible

0
répondu leimenghao 2018-01-23 04:32:27

ajouter le texte suivant:

<item name="android:fitsSystemWindows">true</item>
-1
répondu AGK 2014-01-20 22:02:36