2010-03-17 16 views

Répondre

0

L'API ne fournit pas de fonctionnalité pour personnaliser la barre de titre par défaut, mais nous pouvons essayer d'écrire notre propre barre. C'est en soi une violation mineure des conventions de l'interface utilisateur. Certains téléphones nous permettent d'utiliser setTitle(null) pour supprimer le titre. Les téléphones de la boîte à outils mobile Java se comportent de cette manière, mais les émulateurs Series 40 et 60 ne semblent pas le supporter et génèrent à la place un titre par défaut. D'un autre côté, les Sony Ericssons et Motorolas que j'ai testés semblent soutenir cela.

Cependant, nous pouvons détecter si la possibilité de supprimer la barre de titre est présente. Nous n'utilisons pas le rappel sizeChanged car l'appel de cette fonction peut être retardé lorsque le canevas n'est pas visible. Au lieu de cela, nous appelons getHeight à la fois avant et après la suppression de la barre. Selon la spécification, getHeight doit toujours renvoyer la valeur correcte et à jour, même lorsque le canevas n'est pas affiché. Voici le code pour la mise en œuvre de la détection:

public static boolean HIDE_TITLE_ENABLED;//Whether the implementation allows us to hide the title bar 
static{ 
    //See if we can remove the title by ensuring it is non-nil, then attempting 
    //to remove it. If we can't, then reset it. 
    Canvas c=new Canvas(){ 
     protected void paint(Graphics g){ 
     } 
    }; 
    c.setTitle("test"); 
    int preHeight=c.getHeight(); 
    c.setTitle(null); 
    int afterHeight=c.getHeight(); 
    HIDE_TITLE_ENABLED=preHeight!=afterHeight; 
} 

Il est également possible de cacher la barre de titre en utilisant le mode plein écran, mais cela cache d'autres éléments. Cette méthode est populaire dans les jeux.

1

Vous pourriez aimer vérifier J2ME polonais, qui fournit une grande quantité de personnalisation de l'interface utilisateur pour MIDlets, y compris la barre de titre: link text

+0

J2ME polonais a l'air bien - mais coûte de l'argent – Casebash

+0

uniquement à des fins commerciales ... (Et ce n'est pas beaucoup) – KevinD