2013-03-04 3 views
0

J'ai vu cette question posée partout mais je pense que chaque cas a sa propre résolution. Ce que j'est le suivant:Impossible de centrer correctement les boutons à l'intérieur de ScrollView

<HorizontalScrollView 
    android:id="@+id/MenuScroll" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:fillViewport="true" 
    android:scrollbars="none" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="48dp" 
     android:orientation="horizontal" 
      android:layout_gravity="center" 
     android:padding="0dp" > 

     <Button 
      android:layout_width="150dp" 
      android:layout_height="fill_parent" /> 

     <Button 
      android:layout_width="150dp" 
      android:layout_height="fill_parent" /> 

     <Button 
      android:layout_width="150dp" 
      android:layout_height="fill_parent" /> 

     <Button 
      android:layout_width="150dp" 
      android:layout_height="fill_parent" /> 

     <Button 
      android:layout_width="150dp" 
      android:layout_height="fill_parent" /> 

    </LinearLayout> 
</HorizontalScrollView> 

et ce que je fais semblant est d'avoir la LinearLayout centrée à l'intérieur du HorizontalScrollView. Il est centré (je vois demi-bouton - bouton - demi-bouton) mais je ne peux pas faire défiler jusqu'au premier bouton. On dirait que l'espace occupé par le contenu caché à gauche est ajouté à droite et que de l'espace est ajouté après le HorizontalScrollView. enter image description here

Y at-il une solution, même si je dois le faire dynamiquement?

Répondre

1

J'ai eu ce même problème, pour éviter tout supprimer

android:layout_gravity="center" 

de

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="48dp" 
    android:orientation="horizontal" 
     android:layout_gravity="center" 
    android:padding="0dp" > 

Vous pouvez ajouter une minuterie tout en créant la vue de mise en page pour faire défiler correctement. Si vous n'ajoutez pas la minuterie, elle ne défilera pas en raison de la création de la vue. Vous ne pouvez pas faire défiler quelque chose que vous ne pouvez pas encore voir

new Timer().schedule(new TimerTask() { 
     @Override 
     public void run() { 
      //SOME SCROLLING FUNCTION 
      }}, 50);   
+0

Les boutons ne sont plus centrés dans le 'HorizontalScrollView'. Par centré, je veux dire 3 à gauche et 3 à droite. Je voudrais essayer «ScrollTo» mais il ne le fait pas. – ali

+0

ScrollTo a normalement un problème lorsque vous essayez de faire défiler avant la création de la vue. Essayez d'ajouter une tâche de minuterie, je vais l'ajouter à la solution – Dante

Questions connexes