Frage

Ich habe ein sehr einfaches benutzerdefiniertes Layout erstellt, um ein Menü aus ButtonFields zu erstellen.

Um sie vertikal zu positionieren, teile ich den Bildschirm in 6 und setze sie dann auf die Teilungen 2,3,4 und 5, wie im Code gezeigt.

Für den Emulator, die Fackel, würde eine Höhe von 480 Schaltflächen bei 160.240.320 und 400 sehen.

Wenn ich sie jedoch überprüfe, sind sie alle 24 Pixel darunter, und es scheint keinen offensichtlichen Grund zu geben, es sei denn, dies ist nur eine typische Konvention, die ich verpasst habe!

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);


}
}

------ Erstellung von Einstiegspunkten und Schaltflächen ----

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); 


}



}

War es hilfreich?

Lösung

Mit einem MainScreen erhalten Sie nicht die volle Anzeigehöhe, die dem Bildschirminhalt zugewiesen ist.(Zumindest, IIRC, gibt es den Titel und ein Trennzeichen.) Verwenden Sie stattdessen einen Vollbildschirm und sehen Sie, was passiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top