it-swarm.com.de

Android: Wie kann ich verhindern, dass die Soft-Tastatur meine Ansicht nach oben drückt?

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

Jemand anderes stößt auf dieses Problem? Wissen, wie man es reparieren kann

306

Sie können einfach die Variable windowSoftInputModeflag Ihrer Aktivität in Ihrer AndroidMainfest.xml-Datei innerhalb Ihres Aktivitäten-Tags auf adjustPan setzen.

Überprüfen Sie die offizielle Dokumentation für weitere Informationen.

<activity
   ...
   Android:windowSoftInputMode="adjustPan"> 
</activity>
530

Keine der Antworten hat für mich funktioniert, aber das hat den Trick:

Android:windowSoftInputMode="adjustNothing"
140
Daniel Douglas

In meinem Fall war der Grund, warum die Tasten nach oben gedrückt wurden, weil die Ansicht über ihnen eine ScrollView war, und sie wurde zusammengedrückt, wenn die Tasten über der Tastatur nach oben gedrückt wurden, unabhängig davon, welchen Wert von Android:windowSoftInputMode ich eingestellt hatte.

Ich konnte vermeiden, dass meine unterste Tastenreihe von der Soft-Tastatur nach oben gedrückt wurde, indem ich Android:isScrollContainer="false" auf der ScrollView-Einstellung setzte, die über den Tasten liegt.

72

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

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

Das hat für mich funktioniert, eher das:

Android:windowSoftInputMode="adjustPan"

nicht.

59
Dom

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

Android:windowSoftInputMode="adjustResize"

Das hat wie ein Zauber funktioniert. Nun verschwindet der Header meiner App nicht. Es ist glatter.

32
amalBit

Um dies programmgesteuert in einem Fragment auszuführen, können Sie folgenden Code verwenden

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

Dieses in onResume () platzieren 

8
ChaturaM

Für Xamarin-Benutzer fügen Sie diesen Code zum Activity-Attribut der MainActivity-Klasse hinzu.

WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing

oder Sie können diesen Code Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing) zur OnCreate-Methode der MainActivity-Klasse hinzufügen.

7
Tushar patel

Für zukünftige Leser.

Ich wollte dieses Problem gezielt kontrollieren, also habe ich Folgendes getan:

verstecken Sie Ihre anderen Ansichten aus einem Fragment oder einer Aktivität (die nicht erforderlich sind, während die Tastatur aktiv ist), 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);

                    }
                }
            });
7
Petro

Bisher haben mir die Antworten nicht weitergeholfen, da sich unterhalb der Textansicht ein Button und ein TextInput-Feld (nebeneinander) befinden, das durch die Tastatur immer ausgeblendet wird. Dies hat jedoch mein Problem gelöst:

Android:windowSoftInputMode="adjustResize"
6

Es muss nur eine Zeile hinzugefügt werden ...

Fügen Sie Android:windowSoftInputMode="stateHidden|adjustPan" in der erforderlichen Aktivität Ihres manifest file hinzu.

Ich habe gerade gelöst :) :) 

6
Sravani

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

Android:windowSoftInputMode="adjustResize"
5
Jose Kurian
Android:windowSoftInputMode="stateHidden|adjustNothing"

Dieser Code funktioniert.

4
amyShamna

Das war das Beste, was für mich gearbeitet hat

Android:windowSoftInputMode="adjustNothing"

Versuch es!

4

Nun, ich habe mir diese Antworten angesehen, aber in meinem Fall bin ich auf dasselbe Thema gestoßen und habe durch eine sehr praktische und einfachste Lösung Zuflucht gesucht, bei der ein sehr kleines unschuldiges Attribut in Ihren Scrollview-Tag eingefügt wird, der sich in Ihrer XML-Datei befindet. Das ist

Android:isScrollContainer="false"

Viel Glück!

3
Ali Nawaz

Dieser hat für mich gearbeitet 

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
2
Suresh Pattu

Für die Bildlaufansicht:

wenn Sie nach dem Hinzufügen von Android:windowSoftInputMode="stateHidden|adjustPan" in Ihr Android-Manifest noch immer nicht funktionieren. 

Dies kann davon betroffen sein, weil sich die Tastatur in einer Bildlaufansicht befindet und wenn sich Ihre Schaltfläche/Objekte nicht in Ihrer Bildlaufansicht befinden, folgen die Objekte der Tastatur und verschieben ihre Position. 

Überprüfen Sie Ihre XML-Datei, wo sich Ihre Schaltfläche befindet, und vergewissern Sie sich, dass sie sich unter Ihrer Scroll View-Klammer befindet und nicht außerhalb davon.

Hoffe das hilft aus. : D 

2
Yils

Das Hauptfenster der Aktivität ändert sich nicht, um Platz für die Soft-Tastatur zu schaffen. Stattdessen wird der Inhalt des Fensters automatisch verschoben, sodass der aktuelle Fokus niemals durch die Tastatur verdeckt wird und der Benutzer immer sehen kann, was er eingibt.

Android:windowSoftInputMode="adjustPan"

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

2
user3243900

@manifest in Ihrer Aktivität: 

Android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
1
Juan Mendez

Versuchen Sie, dies zu verwenden:

Android:windowSoftInputMode="stateHidden|adjustPan"
1
Ashish Gautam

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

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

Fügen Sie in Ihre Manifestdatei die Aktivität ein, die Sie anzeigen möchten. Stellen Sie jedoch sicher, dass Sie nicht die Aktivität Vollbild verwenden 

Android:windowSoftInputMode="adjustPan"
1
user3419461
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

Dieser arbeitet für mich.

0
Zhang Slardar

Wenn Sie die Ansicht beim Öffnen der Tastatur ausblenden möchten.

fügen Sie dies zu Ihrer Aktivität in der Manifestdatei hinzu

Android: windowSoftInputMode = "stateHidden | adjustPan" `

0
Hakim Khan

In meinem Fall brauchte ich die Tastatur, um verborgen zu bleiben, und gleich nach dem Klicken des Buttons muss mein Layout angepasst werden. Deshalb habe ich diesen Befehl einfach in das Manifest eingefügt und es wurde super richtig.

Android:windowSoftInputMode="stateHidden|adjustResize"
0