7
votes

Comment faites-vous une liste déroulante qui affiche des images à l'utilisateur au lieu de texte?

Le champ Objectchoicefield répond à toutes mes exigences, mais ce n'est pas joli.

C'est ce que j'ai: xxx

mais je préférerais avoir des images dans la liste déroulante . Ma compréhension est que la matrice d'objet doit contenir des objets prenant en charge la méthode de totrage. Il faut être un moyen de le faire dans d'autres applications, je ne trouve tout simplement pas l'objet correct dans l'API.

Il n'est pas nécessaire d'être un objetChoicefield.


0 commentaires

4 Réponses :


2
votes

Je ne connais pas le développement de BlackBerry, mais je suppose que vous pouvez sous-classe objetchoicefield et écraser la mise en page (int, int) et la peinture (graphique) méthodes.

et ensuite dans peinture (graphiques) peut-être utiliser la méthode drawimage (...) de la méthode passée dans les graphiques-objet pour dessiner l'image.

juste une supposition sauvage


0 commentaires

0
votes

S'il s'agit d'un widget Java, il est possible que vous puissiez passer de simples HTML comme des éléments à afficher dans le champ Choice (ou avez-vous la touche TOSTRING () Renvoyer simple HTML). Ensuite, si c'est le cas et que vous passez une URL d'image / chemin relatif, l'image doit afficher. Afaik qui fonctionnerait au moins, par exemple ...

" chien "

(espaces ajoutés pour le code pour afficher en aperçu)


4 commentaires

Citations simples pour cela pour compiler ... " chien "


Je travaille dans un contexte d'application et non un contexte Web, je ne pense pas que cela fonctionnera.


Cela fonctionne comme il le dit, il analysera le HTML et sa sortie correctement.


En swing, cela fonctionne "dans un contexte d'application". Ce qui compte renvoie une chaîne HTML.



1
votes

Ma réponse sera le long des lignes de Réponse de la gigue . L'idée générale du type de personnalisations que vous souhaitez est de remplacer le comportement par défaut des composants de base.

Supposons que les choix que vous souhaitez afficher peuvent être encapsulés par une classe nommée Choix déclaré comme suit: xxx

alors vous pouvez déclarer un ObjectListField SUPPRESSE AS: xxx

Définissez vos éléments de choix comme: xxx

puis ajoutez-le à votre écran (ou fieldmanager de votre choix) en utilisant: xxx

Je n'ai pas pu remplacer Les éléments de menu contextuels de sélection réels. Cela semble appeler la méthode tostring () de vos éléments de choix. C'est pourquoi j'ai remplacé la mise en œuvre par défaut de TOSTRING () dans le choix classe afin que nous puissions afficher des noms logiques dans cette fenêtre contextuelle .


0 commentaires

4
votes

J'utiliserais des boutons de boutonnage personnalisés et de la popupscreen. Deux raisons:

  • Dans la conception mobile Il est préférable d'utiliser l'écran de manière efficace et le contrôle de liste déroulante de bureau classique semble être moins suffisant que la fenêtre contextuelle, au moins pour les éléments complexes (image + texte) li>
  • Il est plus facile :) li> ul>

    Texte alt http://img405.imageshack.us/img405 /3746/dropdown.jpg p>

    DropDownitem: p>

    class Scr extends MainScreen {
     DDImagesButton ddImages1;
     DDImagesButton ddImages2;
    
     public Scr() {
      HorizontalFieldManager hfm = new HorizontalFieldManager();
      add(hfm);
    
      DropdownItem[] items = new DropdownItem[6];
      items[0] = new DropdownItem(Bitmap.getBitmapResource("1.png"),
        "Add Item");
      items[1] = new DropdownItem(Bitmap.getBitmapResource("2.png"),
        "Attachment");
      items[2] = new DropdownItem(Bitmap.getBitmapResource("3.png"), "Time");
      items[3] = new DropdownItem(Bitmap.getBitmapResource("4.png"), "User");
      items[4] = new DropdownItem(Bitmap.getBitmapResource("5.png"), "Group");
      items[5] = new DropdownItem(Bitmap.getBitmapResource("6.png"),
        "Information");
      ddImages1 = new DDImagesButton(items);
      hfm.add(ddImages1);
    
      ddImages2 = new DDImagesButton(items);
      hfm.add(ddImages2);
     }
    }
    


0 commentaires