Quando io sto cercando di allineare i campi in verticale, non si comportano quello che mi aspettavo? (Blackberry JDE4.5.0 eclissi)
-
21-09-2019 - |
Domanda
Sto usando Eclipse & JDE 4.5.0 plug-in. Come allineare i campi in verticale. Possiamo allineare i campi come LEFT_BOTTOM
, RIGHT_BOTTOM
, LEFT_VCENTER
, RIGHT_VCENTER
, CENTER
(verticale e orizzontale), BOTTOM_CENTER
, ecc ...?
Soluzione
I gestori BlackBerry campo dell'interfaccia utente sono notoriamente fastidiosi quando si tratta di allineamento campo. I gestori sembrano ignorare tutte le bandiere di stile (come HCENTER
, VCENTER
, ecc) e quindi l'unico modo sarete in grado di farlo è quello di eseguire l'override del metodo sublayout
del vostro manager e fai da te.
Ecco un piccolo frammento di mostrare ciò che voglio dire. Questo particolare codice in realtà fa orizzontale di centraggio, centratura non verticale, ma una volta che si ottiene l'idea è possibile implementare tutti gli stili necessari.
VerticalFieldManager mainmanager = new VerticalFieldManager(Field.USE_ALL_WIDTH | Field.USE_ALL_HEIGHT)
{
protected void sublayout( int width, int height ) {
super.sublayout( width, height );
width = getWidth();
height = getHeight();
for (int i = 0;i < this.getFieldCount() - 1; i++)
{
Field field = this.getField(i);
//this positions the item in the middle of the manager
int x = (int)((width - field.getWidth()) * 0.50);
setPositionChild(field, x, field.getTop());
}
}
Si prega di notare che le bandiere USE_ALL_WIDTH
e stile USE_ALL_HEIGHT
sono importanti. Se si vuole fare le cose come centratura verticale, allineamento in basso a destra, ecc è necessario scrivere il codice di posizionamento da soli. Per l'allineamento in basso a destra per esempio si potrebbe impostare la posizione x alla larghezza del gestore meno la larghezza del campo, e la posizione y all'altezza del gestore meno l'altezza del campo.
Se si vuole essere in grado di utilizzare la classe dirigente uno personalizzato per gestire più stili diversi (come in basso a destra, in basso a sinistra) si può aggiungere un po 'di logica in sublayout per controllare stile bandiera del campo e quindi posizionare il campo in modo appropriato.
Speriamo che tutto questo ha un senso e ti aiuta. :)
Altri suggerimenti
HorizontalFieldManager accetta solo stili verticale di allineamento e VerticalFieldManager accettano solo Allineamento orizzontale. Questo è tutto. Fastidioso ++