2017-09-06 1 views
2

J'ai essayé l'accordéon et il ne se dilate pas et ne se contracte pas en douceur à la fois dans le simulateur et les appareils.Plutôt, il se dilate et se contracte brusquement.Accordéon ne fonctionne pas en douceur

Veuillez regarder la vidéo here.

Et comment se fait-il qu'il y a 2 barres de défilement (à la fin de la vidéo, vous verrez 2 barres de défilement, la plus interne défilera et la plus externe restera statique).

public final class LabourCategory extends Form { 

    public LabourCategory(Resources res) { 
     super(new BoxLayout(BoxLayout.Y_AXIS)); 
     setTitle("Labour Category"); 

     loadComponent(res); 
     revalidate(); 
    } 

    public void loadComponent(Resources res) { 
     Container mainContainer = new Container(new BoxLayout(BoxLayout.Y_AXIS)); 
     mainContainer.setUIID("small"); 
     mainContainer.getAllStyles().setBgColor(0xcccccc); 
     mainContainer.getAllStyles().setBgTransparency(255); 
     mainContainer.getAllStyles().setMarginLeft(3); 
     add(mainContainer); 

     for (int i = 0; i < 10; i++) { 
      Accordion labourCategory = new Accordion(); 
      labourCategory.addContent("Labour Category " + i,BoxLayout.encloseY(new Label("aaa"),new Label("bbb"), new Label("ccc"))); 
      labourCategory.setUIID("small"); 
      labourCategory.getAllStyles().setBgColor(0xffffff); 
      labourCategory.getAllStyles().setBgTransparency(255); 

      mainContainer.add(labourCategory); 
     } 
    } 
} 

Répondre

1

Pour résoudre l'animation jacky, modifiez votre formulaire mise en page à BorderLayout et ajouter le Accordion à changer directement ou mainContainer aussi BorderLayout. Pour le Scrollbar, vous devrez l'enlever manuellement car Accordion est une sous-classe de Container.

Enfin, vous n'avez pas besoin de plusieurs Accordion à cette fin, continuez d'ajouter du contenu à un.

public final class LabourCategory extends Form { 

    public LabourCategory(Resources res) { 
     super(new BorderLayout()); 
     setTitle("Labour Category"); 

     loadComponent(res); 
     revalidate(); 
    } 

    public void loadComponent(Resources res) { 
     Accordion labourCategory = new Accordion(); 
     labourCategory.setUIID("small"); 
     labourCategory.getAllStyles().setBgColor(0xffffff); 
     labourCategory.getAllStyles().setBgTransparency(255); 
     labourCategory.setScrollVisible(false); //removes scrollbar 

     for (int i = 0; i < 10; i++) { 
      labourCategory.addContent("Labour Category " + i, BoxLayout.encloseY(new Label("aaa"), new Label("bbb"), new Label("ccc"))); 
     } 

     Container mainContainer = BorderLayout.center(labourCategory); 
     mainContainer.setUIID("small"); 
     mainContainer.getAllStyles().setBgColor(0xcccccc); 
     mainContainer.getAllStyles().setBgTransparency(255); 
     mainContainer.getAllStyles().setMarginLeft(3); 

     add(CENTER, mainContainer);  
    } 

} 
+0

merci Diamant. Ensuite, il faut borderlayout pour travailler. Et à propos de plusieurs scrollbar, je suis confus si c'est d'accordéon. Si l'accordéon est vu à l'intérieur de l'écran de l'appareil, alors il n'y a qu'un seul scroll mais dès qu'il dépasse la hauteur de l'appareil, il y a 2 scroll ce qui est gênant. Comment puis-je retirer la barre de défilement d'accordéon manuellement? – beck

+0

Vous pouvez appeler 'mainContainer.setScrollVisible (false);' et 'getContentPane(). SetScrollVisible (false);' pour masquer les barres de défilement du conteneur et du formulaire. – Diamond

+0

C'est ce que je voulais dire par suppression manuelle. – Diamond