Multiline Custom Label in blackberry

Hallo, ik wil een multiline Custom Label maken in Blackberry Ik heb een Aangepaste dialoogbox gemaakt met een of twee knoppen en om het bericht weer te geven dat ik een LabelField heb toegevoegd Maar het probleem is als de berichttekst te lang wordt dan de aangepaste dialooggrens overschrijdt ik heb een aangepast label nodig dat het bericht in de volgende regel plaatst voor de breedte die ik zou kunnen definiëren voor het label.

0

1 antwoord

U moet uw LabelField toevoegen aan een VerticalFieldManager . Dit antwoord is gebaseerd op mijn antwoord hier . U kunt de breedte van het labelveld wijzigen door de variabele maxWidth aan te passen in de sublayout() -methode van de manager.

public final class CustomScreen extends MainScreen {
    public CustomScreen() {  
        String longString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel lorem eget tortor hendrerit adipiscing. Curabitur mollis pellentesque est ac.";

        VerticalFieldManager vfm = new VerticalFieldManager(Manager.USE_ALL_WIDTH | Manager.NO_HORIZONTAL_SCROLL) {
            protected void sublayout(int maxWidth, int maxHeight) {
                super.sublayout(maxWidth, maxHeight);
            };
        };

        vfm.add(new LabelField(longString));
        add(vfm);    
    }
}

This code snippet produces enter image description here

Wijzigen maxBreedte in Display.getWidth ()/2 (of maxWidth/2 ) in de sublayout van de manager() methode produceert

enter image description here

UPDATE (as Yatin suggested): One can achieve the same functionality without using VerticalFieldManager but than vertical scrolling will not be available in case the text doesn't fit vertically.

public final class CustomScreen extends MainScreen {
    public CustomScreen() {  
        String longString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel lorem eget tortor hendrerit adipiscing. Curabitur mollis pellentesque est ac.";

        add(new LabelField(longString) {
            protected void layout(int width, int height) {
                super.layout(width/2, height);
            }
        });    
    }
}
3
toegevoegd
ik heb een curiositeit of dit kan worden bereikt door de sublayout- of lay-outmethode (die ooit van toepassing is) te overschrijven in het veld LabelField en niet in het verticale veld als er andere elementen in VerticalFieldManager moeten worden toegevoegd
toegevoegd de auteur Yatin, de bron
Bedankt @MrVincenzo
toegevoegd de auteur Yatin, de bron
Ik vind deze code nieuwsgierig. In het fragment dat u weergeeft, overschrijft u sublayout() , maar super.sublayout() aanroepen met dezelfde parameters die aan u zijn doorgegeven. In welk geval, wat is het nut van de aangepaste VerticalFieldManager ? Ik denk dat je het misschien hebt ingesteld om te laten zien hoe het bottom screenshot kon worden bereikt met behulp van maxWidth/2? Maar dat lijkt nog steeds vreemd. Als u alleen een LabelField met een halve breedte wilt, waarom zou u het dan in een Manager op volledige breedte nesten? Het lijkt mij dat de Manager zelf de halve breedte moet hebben als de inhoud op die manier beperkt wordt.
toegevoegd de auteur Nate, de bron
@Nate Ik heb het ingesteld voor het tweede voorbeeld (ik benadrukte dat "U kunt de breedte van het labelveld wijzigen door de maxWidth-variabele te wijzigen in de methode sublayout() van de manager" ). Anders heeft dat geen zin.
toegevoegd de auteur mrvincenzo, de bron
@YatinK Eigenlijk kan dat. U kunt de layout() -methode van de LabelField op dezelfde manier overschrijven als voor de VerticalFieldManager , maar u verliest het verticale scrollen functionaliteit (in het geval de tekst erg lang is).
toegevoegd de auteur mrvincenzo, de bron
@YatinK Ik heb mijn antwoord bijgewerkt met een voorbeeld dat geen VerticalFieldManager gebruikt.
toegevoegd de auteur mrvincenzo, de bron