2010-11-06 23 views
25

La disposition de mon activité est indiquée ci-dessous.Android - Soft Keyboard pousse la disposition de mon activité hors de l'écran

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <FrameLayout android:id="@+id/title_bar" 
     android:layout_width="fill_parent" 
     android:layout_height="25dip" 
     android:background="@drawable/bg_title" /> 

    <LinearLayout android:id="@+id/main" 
     android:width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1"> 
     <ListView android:id="@+id/android:list" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" /> 
     <TextView android:id="@+id/android:empty" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" /> 
     </FrameLayout> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="50dip" > 
     <EditText android:id="@+id/query" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:hint="Enter some search terms" 
     android:singleLine="true" 
     android:layout_weight="1" /> 
     <Button android:id="@+id/btn_hide" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/btn_hide" 
     android:layout_marginLeft="6dip" /> 
    </LinearLayout> 
</LinearLayout> 

Ainsi, le champ de recherche est fixé au bas de l'écran. Mais, lorsque l'utilisateur clique sur l'EditText, le clavier logiciel apparaît et pousse la mise en page hors de l'écran à l'exception du champ de recherche.

Je ne fais que commencer avec Android, alors je fais quelque chose de mal ici ??

Répondre

51

Essayez d'ajouter ce qui suit pour votre activité dans Manifest:

android:windowSoftInputMode="adjustPan" 
+6

Merci. C'était l'attribut que je cherchais. Mais, en tant que valeur, j'ai dû utiliser "adjustResize" pour le faire fonctionner comme j'avais besoin. – venkatagiri

+1

Salut, j'ai aussi le même problème. Mais je ne peux pas utiliser "adjustResize". parce que j'ai tabbar en bas. si j'utilise redimensionner tabbar sera poussé au-dessus du clavier souple. Je ne veux pas que ça arrive. donc si quelqu'un a une solution, aidez-moi s'il vous plaît. – Raj

5

@Raj Si vous travaillez avec une application par onglets, vous devez ajouter

android:windowSoftInputMode="adjustPan"

sur le Activity où vous êtes en ajoutant les onglets, ce serait probablement l'activité de votre lanceur.

Voici un extrait de mon code

<activity 
    android:label="@string/app_name" 
    android:name=".MainActivity" android:windowSoftInputMode="adjustPan"> 
    <intent-filter > 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 

13

Pour ceux qui sont intéressés, la différence entre android:windowSoftInputMode="adjustPan" et android:windowSoftInputMode="adjustResize":

"adjustResize"

L'activité de fenêtre est redimensionnée pour faire de la place pour le soft keybo ard sur l'écran.

« adjustPan »

Le contenu de la fenêtre de l'activité sont automatiquement batée de sorte que l'objectif actuel est jamais bloqué par le clavier. C'est ainsi que l'utilisateur peut voir ce qu'il tape. Ceci est généralement moins souhaitable que le redimensionnement, car l'utilisateur peut avoir besoin de fermer le clavier logiciel pour interagir avec des parties obscurcies de la fenêtre.

Android Documentation

Cited link