studio - android:windowsoftinputmode




Android: Wie verhindere ich, dass die Soft-Tastatur meine Ansicht verschiebt? (14)

Ich habe eine vertikale Schublade am unteren Rand meiner App. Wenn sich die Soft-Tastatur öffnet, drückt sie die Lasche für die Schublade nach oben, sodass sie auf der Tastatur sitzt. Ich möchte eigentlich, dass es unten auf dem Bildschirm bleibt und versteckt wird, wenn die Tastatur angezeigt wird.

Ist noch jemand auf dieses Problem gestoßen? Können Sie es reparieren?


Bis jetzt haben mir die Antworten nicht geholfen, da ich einen Button und ein textInput-Feld (nebeneinander) unterhalb der textView habe, die immer von der Tastatur versteckt wurden, aber das hat mein Problem gelöst:

android:windowSoftInputMode="adjustResize"

Das Hauptfenster der Aktivität ändert sich nicht, um Platz für die Soft-Tastatur zu schaffen. Stattdessen wird der Inhalt des Fensters automatisch geschwenkt, so dass der aktuelle Fokus niemals von der Tastatur verdeckt wird und Benutzer immer sehen können, was sie gerade schreiben.

android:windowSoftInputMode="adjustPan"

Dies könnte eine bessere Lösung für das sein, was Sie wollten.


Diese Antworten hier haben mir nicht geholfen. Also habe ich Folgendes versucht:

android:windowSoftInputMode="adjustResize"

Das funktionierte wie ein Zauber, jetzt verschwindet der Header meiner App nicht. Es ist glatter.


Dieser Code kann Ihnen helfen. Verwenden Sie es in Ihrer oncreate Methode.

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

Fügen Sie der 'Aktivität' der Manifest-Datei den folgenden Code hinzu.

android:windowSoftInputMode="adjustResize"

Für Bildlaufansicht:

wenn nach dem Hinzufügen von android:windowSoftInputMode="stateHidden|adjustPan" in Ihrem Android-Manifest und immer noch nicht funktioniert.

Es kann betroffen sein, denn wenn die Tastatur erscheint, wird sie in eine Bildlaufansicht und wenn sich Ihre Schaltfläche / irgendwelche Objekte nicht in Ihrer Bildlaufansicht befinden, folgen die Objekte der Tastatur und verschieben ihre Position.

Sehen Sie sich Ihre XML-Datei an, wo sich Ihre Schaltfläche befindet, und stellen Sie sicher, dass sie sich unter Ihrer Bildlaufleiste befindet.

Hoffe das hilft aus. : D


Für zukünftige Leser.

Ich wollte eine genaue Kontrolle über dieses Problem, also habe ich Folgendes getan:

Verstecken Sie Ihre anderen Ansichten (die nicht benötigt werden, während die Tastatur geöffnet ist) aus einem Fragment oder einer Aktivität und stellen Sie sie dann wieder her , um dieses Problem zu lösen:

            rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    Rect r = new Rect();
                    rootView.getWindowVisibleDisplayFrame(r);
                    int heightDiff = rootView.getRootView().getHeight() - (r.bottom - r.top);

                    if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
                    //ok now we know the keyboard is up...
                        view_one.setVisibility(View.GONE);
                        view_two.setVisibility(View.GONE);

                    }else{
                    //ok now we know the keyboard is down...
                        view_one.setVisibility(View.VISIBLE);
                        view_two.setVisibility(View.VISIBLE);

                    }
                }
            });

In meinem Fall brauchte ich die Tastatur, um versteckt zu bleiben und nach dem Klick auf den Button musste mein Layout angepasst werden, also habe ich diesen Befehl in das Manifest eingefügt und es wurde super richtig.

android:windowSoftInputMode="stateHidden|adjustResize"

Keine der Antworten funktionierte für mich, aber das machte den Trick:

android:windowSoftInputMode="adjustNothing"

Nun, ich habe mir diese Antworten angeschaut, aber in meinem Fall bin ich auf dasselbe Problem gestoßen und habe Zuflucht bei einer sehr praktischen und einfachsten Lösung gefunden, die darin besteht, ein sehr kleines unschuldiges Attribut in Ihr Scrollview-Tag in Ihrer XML-Datei einzufügen. Das ist

android:isScrollContainer="false"

Viel Glück!


Sie können das windowSoftInputMode-Flag Ihrer Aktivität einfach auf "adjustPan" umschalten. Weitere Informationen finden Sie in der offiziellen Dokumentation .

<activity
   ...
   android:windowSoftInputMode="adjustPan"> 
</activity>

Sie können versuchen, dieses Attribut dynamisch hinzuzufügen, indem Sie den folgenden Code in die onCreate Methode Ihrer Aktivität onCreate :

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

Dies funktionierte für mich, eher das:

android:windowSoftInputMode="adjustPan"

nicht.


Versuchen Sie Folgendes zu verwenden:

android:windowSoftInputMode="stateHidden|adjustPan"

android:windowSoftInputMode="stateHidden|adjustNothing"

Dieser Code funktioniert.





view