0

J'utilise un fichier XML pour définir un dialogue qui est montré à l'utilisateur. J'aimerais pouvoir faire défiler TextViews et EditTexts, mais afficher les boutons OK et Annuler à tout moment. Je n'arrive pas à faire ça. Voici mon fichier Mise en page:Mise en page de boîte de dialogue ne s'affiche pas comme il se doit

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

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

      <!-- Group Name --> 
      <TextView android:id="@+id/group_name_view" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:layout_marginLeft="20dip" 
       android:layout_marginRight="20dip" 
       android:text="@string/group_name_view_text" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText android:id="@+id/group_name_edit" 
       android:layout_height="wrap_content" 
       android:layout_width="fill_parent" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:scrollHorizontally="true" 
       android:autoText="false" 
       android:capitalize="none" 
       android:gravity="fill_horizontal" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <!-- Group Description --> 
      <TextView android:id="@+id/group_description_view" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:text="@string/group_description_view_text" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText android:id="@+id/group_description_edit" 
       android:layout_height="wrap_content" 
       android:layout_width="fill_parent" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:scrollHorizontally="true" 
       android:autoText="false" 
       android:capitalize="none" 
       android:gravity="fill_horizontal" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <!-- Access security --> 

      <TextView android:id="@+id/access_security_view" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:text="@string/access_security_view_text" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <Spinner android:id="@+id/access_spinner" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:gravity="fill_horizontal" 
       android:drawSelectorOnTop="true" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <!-- Communications security --> 
      <TextView android:id="@+id/communcations_security_view" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:text="@string/communcations_security_view_text" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <Spinner android:id="@+id/communications_spinner" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:gravity="fill_horizontal" 
       android:drawSelectorOnTop="true" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <!-- User --> 
      <TextView android:id="@+id/username_view" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:text="@string/username_view_text" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText android:id="@+id/username_edit" 
       android:enabled="false" 
       android:layout_height="wrap_content" 
       android:layout_width="fill_parent" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:scrollHorizontally="true" 
       android:autoText="false" 
       android:capitalize="none" 
       android:gravity="fill_horizontal" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 
      <!-- Password --> 
      <TextView android:id="@+id/password_view" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:text="@string/password_view_text" 
       android:gravity="left" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText android:id="@+id/password_edit" 
      android:enabled="false" 
       android:layout_height="wrap_content" 
       android:layout_width="fill_parent" 
       android:layout_marginLeft="20dip" android:layout_marginRight="20dip" 
       android:scrollHorizontally="true" 
       android:autoText="false" 
       android:capitalize="none" 
       android:gravity="fill_horizontal" 
       android:password="true" android:textAppearance="?android:attr/textAppearanceMedium" /> 

     </LinearLayout> 
    </ScrollView> 
    <LinearLayout android:layout_height="wrap_content" 
     android:layout_width="fill_parent" > 
     <Button android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:text="@string/ok_text" 
       android:layout_weight="1" android:id="@+id/group_creator_ok_button"> 
     </Button> 
     <Button android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:text="@string/cancel_text" 
       android:layout_weight="1" 
       android:id="@+id/group_creator_cancel_button"> 
     </Button> 
    </LinearLayout> 
</LinearLayout> 

J'ai étendu la classe de dialogue alors quand onCreate est appelé que j'appelle

setContentView(R.layout.my_layout_file); 

Il est juste de me montrer le ScrollView, mais pas la mise en page avec les boutons .. Donc je ne suis même pas capable de pousser les boutons.

Répondre

1

vient de changer la hauteur de votre ScrollView comme celui-ci

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="380dp"> 

et il n'y a pas besoin d'écrire

xmlns:android="http://schemas.android.com/apk/res/android" 

sur chaque étiquette, il n'a besoin que sur la première balise

+0

Ce n'est pas très indépendant de l'appareil. Que faire si l'écran est 1280 x 800? – DKIT

+0

vous pouvez le faire en obtenant la largeur et la hauteur au moment de l'exécution et définir votre hauteur ScrollView en conséquence –

1

Votre scrollview utilise un contenu enveloppant, donc si le contenu est plus grand que l'écran, naturellement vos boutons ne seront pas affichés. Essayez d'utiliser android: layout_weight pour attribuer une 'importance' à vos éléments de mise en page.

Une alternative que vous pouvez regarder est d'utiliser le <merge>-tag.

Ensuite, vous pouvez faire quelque chose comme ceci:

<merge> 
<ScrollView android:layout_height="fill_parent" ... > 
... 
</ScrollView> 

<LinearLayout android:layout_height="wrap_content" android:layout_gravity="center|bottom" ...> 
    <Button></Button>.... 
<LinearLayout> 

</merge> 
+0

fusion est grande mais, malheureusement , cela n'a pas fonctionné ici parce que les vues sont fusionnées et les boutons ont couvert un EditText. Néanmoins, jouer avec des poids a bien fonctionné. – Pedriyoo

1

Vous n'avez pas spécifié l'orientation pour la LinearLayout intérieure. Pouvez-vous vérifier avec ça?

Si cela ne fonctionne pas, essayez d'utiliser le hierarchyviewer.

+0

Je devais régler l'orientation non de l'intérieur LinearLayout, mais l'extérieur, à "horizontale" – Pedriyoo

Questions connexes