2013-10-24 20 views
12

Ich habe eine Aktivität mit einem editText in der Mitte. Wenn ich auf den editText klicke, erscheint die Tastatur und der Bildschirm bewegt sich so, dass der editText direkt über der Tastatur liegt und die anderen darunter liegenden Objekte abdeckt.Scrollen Sie den Bildschirm nach oben, wenn die Tastatur erscheint

Ich möchte die Größe nicht ändern oder Padding zum Layout hinzufügen. Ich brauche nur, dass der Bildschirm die Menge an Speicherplatz nach oben scrollt, die ich brauche, um auch die anderen Sachen darunter zu sehen. Mit anderen Worten, ich möchte die Position des editText auswählen, wenn die Tastatur erscheint. Es würde auch reichen, wenn der Bildschirm komplett nach oben scrollt und mir die Unterseite des Layouts zeigt.

Ich habe versucht, das Layout in einem Scrollview Hinzufügen dieser Code auf dem editText

editText.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //make the view scroll down to the bottom 
      scrollView.scrollTo(0, scrollView.getBottom()); 

     } 
    }); 

zu setzen, aber es funktioniert nicht. Hat jemand eine Idee? Vielen Dank im Voraus!

Antwort

11

Ich hatte mal ein ähnliches Problem, entschloß ich mich mit:

android:windowSoftInputMode="adjustResize" 

im AndroidManifest.xml.

Wenn Sie ein RelativeLayout verwenden, beginnen Sie mit dem unteren Element, das an das übergeordnete Element angehängt werden muss, und haken Sie das andere Element über das vorherige Element an.

Wenn Sie LinearLayout verwenden, wickeln Sie es in eine RelativeLayout ein und hängen Sie die LinearLayout an parentBottom.

Auf diese Weise sehen Sie, wenn die Tastatur erscheint, die Unterseite Ihres Layouts.

Hoffe, das hilft.

+5

Was bedeutet „Wenn Sie ein RelativeLayout mit dem Bodenelement beginnen, die oberhalb der Haken an Mutterboden und der Haken das andere Element sein muss Bisherige." Bedeuten? Ich habe nicht verstanden, was du mit Haken meinst, kannst du bitte weiter erklären? – Josh

+0

Was ist, wenn der Teil des Bildschirms, den ich anzeigen möchte, wenn die Tastatur sichtbar ist, nicht an den Elternboden angehängt werden darf, sondern zentriert auf der Seite? –

+0

Funktioniert nicht in meinem "Fragment" getActivity(). GetWindow(). SetSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); – delive

3

Dies funktioniert für mich

android:windowSoftInputMode="stateVisible|adjustResize" 

in AndroidManifest für die Aktivität

+0

Er möchte nicht die Größe ändern. – Sid

16

Verwendung android: windowSoftInputMode = "adjustPan"

"adjustResize"

Die Aktivität Haupt Das Fenster wird immer in der Größe angepasst, um Platz für den Softkey zu schaffen Brett auf dem Bildschirm.

„adjustPan“

Das Hauptfenster der Aktivität ist nicht für die Soft-Tastatur, um Platz angepasst. 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. Dies ist im Allgemeinen weniger wünschenswert als eine Größenanpassung, da der Benutzer möglicherweise die Soft-Tastatur schließen muss, um sich mit verdeckten Teilen des Fensters zu befassen und mit diesen zu interagieren.

Zum Beispiel inn Ihr Manifest-Datei: -

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

Spät answer.But sicher hilft es niemandem.

2

ich dieses Problem hatte, wurde ich von diesem Code aufgelöst:

myEdittext.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        myscrollview.postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          View lastChild = myscrollview.getChildAt(myscrollview.getChildCount() - 1); 
          int bottom = lastChild.getBottom() + myscrollview.getPaddingBottom(); 
          int sy = myscrollview.getScrollY(); 
          int sh = myscrollview.getHeight(); 
          int delta = bottom - (sy + sh); 
          myscrollview.smoothScrollBy(0, delta); 
         } 
        }, 200); 
       } 
      }); 
Verwandte Themen