Question

J'ai créé une disposition personnalisée très basique pour définir un menu composé de Buttonfields.

Pour les positionner verticalement, j'ai divisé l'écran en 6, puis je les ai mis aux divisions 2,3,4 et 5 comme indiqué dans le code.

Ainsi, pour l'émulateur, la torche, une hauteur de 480 verrait des boutons à 160 240,320 et 400.

Cependant, lorsque je les vérifie, ils sont tous à 24 pixels en dessous, et il n'y a aucune raison évidente à moins que ce ne soit qu'une convention typique que j'ai manquée!

package Test;

import net.rim.device.api.system.Display;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.container.VerticalFieldManager;

class MenuLayoutManager extends VerticalFieldManager{

public MenuLayoutManager()
{
    super();
}

public int getPreferredWidth()
{
    int preferredWidth = Display.getWidth();
    return preferredWidth;
}

protected void sublayout(int inMaxWidth, int inMaxHeight)
{
int xCentre = Display.getWidth()/2;
int yGap = Display.getHeight() / 6;
int xPos = 0;
int yPos = yGap * 2;
int fieldNo = this.getFieldCount();

for(int index = 0; index<fieldNo; index++)
{
Field aField = this.getField(index);
this.layoutChild(aField, inMaxWidth, inMaxHeight);
xPos = xCentre - (aField.getWidth() / 2);
this.setPositionChild(aField, xPos, yPos);
yPos += yGap;
}
this.setExtent(inMaxWidth, inMaxHeight);


}
}

------ Point d'entrée et création de bouton ----

package Test;


import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.container.MainScreen;

class MyScreen extends MainScreen
{
public MyScreen(){
super(MainScreen.NO_VERTICAL_SCROLL|MainScreen.NO_VERTICAL_SCROLLBAR);
this.initialize();
}

private void initialize()
{        
    // Set the displayed title of the screen


    this.setTitle(String.valueOf("Ben's Menu"));

    MenuLayoutManager mlm = new MenuLayoutManager();
    ButtonField Button1 = new ButtonField("New Game");
    ButtonField Button2 = new ButtonField("High Scores");
    ButtonField Button3 = new ButtonField("Instructions");
    ButtonField Button4 = new ButtonField("Exit");
    mlm.add(Button1);
    mlm.add(Button2);
    mlm.add(Button3);
    mlm.add(Button4);
    this.add(mlm); 


}



}
Était-ce utile?

La solution

Avec un principal, vous n'obtenez pas la hauteur d'affichage complète allouée au contenu de l'écran. (Au minimum, IIRC, il y a le titre et un séparateur.) Essayez d'utiliser un écran complet à la place et voyez ce qui se passe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top