Domanda

Può qualcuno per favore fammi sapere perché non riesco a collocare 2 modifiche fianco a fianco con il seguente codice?Posso posizionare 3 pulsanti fianco a fianco, ma per qualche motivo non riesco a far funzionare i campi di modifica per me.Qualsiasi aiuto sarà apprezzato.

            //Bin Height
    HorizontalFieldManager hManagerBinHeight = new HorizontalFieldManager(FIELD_BOTTOM);

    LabelField lblRadiusOfBin = new LabelField("Radius of Bin: ", LabelField.FIELD_LEFT);

    EditField txtRadiusFeet = new EditField("Feet: ", "", 3, BasicEditField.FILTER_NUMERIC);
    EditField txtRadiusInches = new EditField("Inches: ", "", 2, BasicEditField.FILTER_NUMERIC);

    hManagerBinHeight.add(lblRadiusOfBin);
    hManagerBinHeight.add(txtRadiusFeet);
    hManagerBinHeight.add(txtRadiusInches);

    add(hManagerBinHeight);
.

È stato utile?

Soluzione

EditFields per impostazione predefinita consumano tutta la larghezza disponibile passata a loro durante il layout.Di conseguenza, la larghezza disponibile lasciata per il secondo editfield è 0. Per layout di loro fianco a fianco, è necessario:

    .
  1. layout li disposizione manualmente nel metodo sublayout() del genitore (o layout() in caso di Manager).
  2. Sostituisci il metodo layout()Gcode di EDITFIELD e renderlo consumare una larghezza fissa e non tutta la larghezza.

    Opzione 1 :

        HorizontalFieldManager hManagerBinHeight = new HorizontalFieldManager(FIELD_BOTTOM);
    
        LabelField lblRadiusOfBin = new LabelField("Radius of Bin: ", LabelField.FIELD_LEFT);
    
        final EditField txtRadiusFeet = new EditField("Feet: ", "", 3, BasicEditField.FILTER_NUMERIC);
        txtRadiusFeet.setBorder(BorderFactory.createRoundedBorder(new XYEdges()));
        final EditField txtRadiusInches = new EditField("Inches: ", "", 2, BasicEditField.FILTER_NUMERIC);
        txtRadiusInches.setBorder(BorderFactory.createRoundedBorder(new XYEdges()));
    
        HorizontalFieldManager hfm = new HorizontalFieldManager(USE_ALL_WIDTH) {
            protected void sublayout(int maxWidth, int maxHeight) {
                layoutChild(txtRadiusFeet, maxWidth/2, maxHeight);
                layoutChild(txtRadiusInches, maxWidth/2, maxHeight);
                setPositionChild(txtRadiusFeet, 0, 0);
                setPositionChild(txtRadiusInches, txtRadiusFeet.getWidth(), 0);
    
                setExtent(maxWidth, txtRadiusFeet.getHeight());
            };
        };
        hfm.add(txtRadiusFeet);
        hfm.add(txtRadiusInches);
    
        hManagerBinHeight.add(lblRadiusOfBin);
        hManagerBinHeight.add(hfm);
    
        add(hManagerBinHeight);
    
    .


    Opzione 2:

    HorizontalFieldManager hManagerBinHeight = new HorizontalFieldManager(FIELD_BOTTOM);
    
        LabelField lblRadiusOfBin = new LabelField("Radius of Bin: ", LabelField.FIELD_LEFT);
    
        EditField txtRadiusFeet = new EditField("Feet: ", "", 3, BasicEditField.FILTER_NUMERIC) {
            // Limit the width of the edit field to be the half of the available width
            protected void layout(int width, int height) {
                super.layout(width/2, height);
            }
        };
        txtRadiusFeet.setBorder(BorderFactory.createRoundedBorder(new XYEdges()));
    
        EditField txtRadiusInches = new EditField("Inches: ", "", 2, BasicEditField.FILTER_NUMERIC);
        txtRadiusInches.setBorder(BorderFactory.createRoundedBorder(new XYEdges()));
    
        HorizontalFieldManager hfm = new HorizontalFieldManager(USE_ALL_WIDTH);
        hfm.add(txtRadiusFeet);
        hfm.add(txtRadiusInches);
    
        hManagerBinHeight.add(lblRadiusOfBin);
        hManagerBinHeight.add(hfm);
    
        add(hManagerBinHeight);
    
    .



    Risultato

    Inserire l'immagine Descrizione qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top