2014-03-03 6 views
5

Ich kann nicht scheinen, dass die android: windowSoftInputMode = "stateVisible | adjustResize" -Option arbeiten. Wenn die Bildschirmtastatur angezeigt wird, scrollt die Bildlaufansicht nicht automatisch zum unteren Teil.Warum nicht android: windowSoftInputMode = "stateVisible | adjustResize" den Bildschirm anpassen, wenn die Soft-Tastatur angezeigt wird?

Bearbeiten: Ich habe versucht mit adjustPan stattdessen (stateVisible | adjustPan), aber was passiert, ist die Scroll-Ansicht deaktiviert wird.

Lösung: Endlich fand ich einen Vorschlag, der funktioniert. Ich habe einen OnGlobalLayoutListener() erstellt und zu meiner Bildlaufansicht hinzugefügt. Ich habe überprüft, ob sich die Höhe der Stammansicht meiner Aktivität (die meine Bildlaufansicht ist) geändert hat. Wenn ja, nehme ich an, dass die Soft-Tastatur angezeigt wird.

Klicken Sie auf here für weitere Informationen.

Hier ist meine Quellcode:

AndroidManifest.xml

<application 
     ... 
     android:theme="@android:style/Theme.NoTitleBar" > 
     <activity 
      ... 
      android:screenOrientation="portrait" 
      android:windowSoftInputMode="stateVisible|adjustResize" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     ... 
</application> 

Login-Bildschirm mit Tastatur - Ansicht blättern Bildlauf nicht enter image description here

Wunschergebnis enter image description here

+0

Verwendung android: windowSoftInputMode = "adjustPan | adjustResize" – Piyush

+0

Ähnlich adjustPan | stateVisible, dies deaktiviert die Bildlaufansicht. –

Antwort

4

Lösung: Endlich fand ich einen Vorschlag, der funktioniert. Ich habe einen OnGlobalLayoutListener() erstellt und zu meiner Bildlaufansicht hinzugefügt. Ich habe überprüft, ob sich die Höhe der Stammansicht meiner Aktivität (die meine Bildlaufansicht ist) geändert hat. Wenn ja, nehme ich an, dass die Soft-Tastatur angezeigt wird.

Klicken Sie auf here für weitere Informationen.

0

try

android:windowSoftInputMode="adjustPan|stateVisible" 
+1

Entschuldigung. Ich habe vergessen zu erwähnen, dass ich das schon probiert habe. Was passiert, ist, dass die Bildlaufansicht nicht mehr scrollt, wenn adjustPan verwendet wird. –

1

Sie automatisch selbst auf den Grund Ihrer Tätigkeit bewegen könnte, durch Überschreiben der onConfigurationChanged() Rückruf in Ihnen Activity:

scrollView.post(new Runnable() {    
    @Override 
    public void run() { 
      scrollView.fullScroll(View.FOCUS_DOWN);    
    } 
}); 

Das heißt, Sie müssen auch wollen, um den Rückruf Sie Ihre Aktivität sagen aufgerufen werden, wenn die Aktivität ihr Layout ändert, indem das Attribut configChanges in der Aktivitätserklärung in Ihrer AndroidManifest Datei verwendet wird:

<activity 
    android:configChanges="screenLayout|screenSize" <!-- Don't know which could actually do the trick --> 
    ... > 
</activity> 

Ich hoffe, das kann Ihnen helfen.

+0

Ich habe onConfigurationChanged() hinzugefügt, aber es wird nicht aufgerufen. Auch nachdem ich den Parameter configChanges in meiner AndroidManifest.xml hinzugefügt habe. –

+0

Woher wissen Sie, dass es nicht heißt? Haben Sie versucht, einfach eine Nachricht im Logcat zu drucken? – Flawyte

+0

Hallo. Ja. Ich habe einen Log.i() - Aufruf innerhalb der Methode hinzugefügt. Wie auch immer, ich habe endlich eine Lösung gefunden, die funktioniert. Ich bearbeite meinen Beitrag, um ihn hinzuzufügen. Vielen Dank! –

-2

Ich fand, dass wenn ich Layoutparameter in meiner Bildlaufansicht festgelegt hatte, dann würde es nicht funktionieren. Sobald die Layoutparameter entfernt wurden, funktionierte es wie erwartet. Ich kann nicht erklären, warum, ich lasse nur andere wissen, was für mich funktioniert hat.

0

In Manifest:

android:windowSoftInputMode="adjustPan|stateVisible" 

In Layout xml Ende aller Kind Layout Scroll eingestellten Textview, wie

<ScrollView 
    android:id="@+id/driverLoginScrollView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fillViewport="false" 
    android:scrollbars="none"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:layout_marginTop="50dp" 
     android:focusable="true" 
     android:focusableInTouchMode="true" 
     android:orientation="vertical"> 
     . 
     . 
     . 
     <TextView 
     android:layout_width="match_parent" 
     android:layout_height="100dp" 
     android:focusable="false" 
     android:textIsSelectable="false" /> 
     </LinearLayout> 
</ScrollView> 
Verwandte Themen