2010-05-13 6 views
3

Dans mon application Android, j'ai un onglet Activity. Dans l'un des onglets, j'ai deux TextView s et deux EditText s.Android EditText ne prendra pas l'espace restant

Le premier EditText est seulement une ligne, et c'est très bien. Cependant, je veux l'autre EditText, android:id="@+id/paste_code", pour occuper l'espace restant, mais peu importe ce que je fais, il montrera seulement une ligne. Je ne veux pas définir manuellement le nombre de lignes, car le nombre qui convient à l'écran diffère en fonction de votre appareil.

Voici le code approprié. Il est imbriqué dans tous les composants nécessaires pour un onglet Activity.

<ScrollView 
    android:id="@+id/basicTab" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" > 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Paste title" 
      android:layout_weight="0" /> 
     <EditText 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/paste_title_hint" 
      android:id="@+id/paste_title" 
      android:lines="1" 
      android:gravity="top|left" 
      android:layout_weight="0" /> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Paste text" 
      android:layout_weight="0" /> 
     <EditText 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:hint="@string/paste_hint" 
      android:id="@+id/paste_code" 
      android:gravity="top|left" 
      android:layout_weight="1" /> 
    </LinearLayout> 
</ScrollView> 

Répondre

9

Depuis la réponse acceptée ne traite pas pleinement la situation, voici une solution appropriée pour les personnes qui viennent à ce temps la recherche:

Tout d'abord, Romain Guy des adresses de l'équipe de dev Android ce bien dans ce billet de blog:

http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/

Essentiellement, vos ScrollView doit contenir l'attribut android:fillViewport="true".

Si les choses ne fonctionnent pas une fois que vous avez fait cela, voici quelques choses à vérifier:

  • La mise en page à l'intérieur du ScrollView (comme un LinearLayout) doit avoir layout_height="wrap_content"
  • la vue (s) que vous souhaitez développer doit avoir layout_height="wrap_content"
  • la vue (s) que vous souhaitez développer devrait avoir layout_weight="1.0" ou similaire

N'oubliez pas de régler minLines="3" ou similaire dans les vues que vous voulez agrandir si vous ne voulez pas trop les rétrécir.

+0

En effet; Merci pour ça. J'ai commenté l'autre réponse avec un lien vers une autre question SO qui a résolu mon problème. – Jamie

+0

fonctionne comme un charme! – Damjan

0

Le problème semble provenir de votre utilisation de ScrollView. J'ai testé votre code en utilisant un ScrollView comme conteneur parent, et j'ai eu le même problème. Toutefois, si j'ai remplacé le ScrollView par un LinearLayout, le second EditText s'est correctement développé pour remplir tout l'écran. Le problème doit être que ScrollViews sont conçus pour envelopper à leur plus petite taille possible, quels que soient les paramètres que vous mettez dans android: layout_height. J'ai expérimenté avec quelques autres mises en page, par ex. un RelativeLayout en utilisant layout_above et layout_below, mais ceux-ci seulement affecté sa taille maximale, pas sa taille lorsqu'il est vide. Malheureusement, cela signifie que je ne suis pas sûr de savoir comment résoudre votre problème ... Y a-t-il un moyen de redéfinir votre mise en page pour utiliser autre chose que ScrollView comme conteneur parent?

+0

Oui, cet onglet serait probablement bien sans ScrollView, puisque (si je me souviens bien) EditTexts ont leurs propres barres de défilement. Je vais jouer avec un LineaLayout. Merci. – Jamie

+0

En outre, je viens de trouver http://stackoverflow.com/questions/2033296/android-scrollview-problem qui affirme votre déclaration d'android: layout_height ne fait rien et offre un autre attribut XML pour le faire prendre le reste de l'écran. Si cela ne fonctionne pas, je vais utiliser un LinearLayout. – Jamie

Questions connexes