LWUIT: guias - como marcar a guia atualmente selecionada
-
29-10-2019 - |
Pergunta
Eu tenho 4 guias.Cada guia é representada por um botão.Esses botões são usados para selecionar a guia exibida no momento.Cada botão possui um ícone e um texto.
Gostaria de destacar a guia atualmente selecionada alterando a cor de fundo e a cor do rótulo de texto do botão correspondente.Eu gostaria de fazer isso usando o Theme and Resource Editor.
Eu criei o tema e especifiquei estilos não selecionados, selecionados e pressionados para UIID "Guia".Minhas guias ficam ótimas no Sun WTK!Multar!Mas descobri que, em um telefone real, as guias sempre parecem não selecionadas.Experimentei o Nokia 5800 XPressMusic e C7.Por que a diferença?
Depois de alguns experimentos, descobri o motivo - os botões podem estar em apenas 2 estados: não selecionados e pressionados.Eles nunca estarão no estado selecionado.No emulador, quando eu movo para um botão usando as teclas de navegação, ele é selecionado.
Então, o que devo fazer para marcar a guia atual?
Solução 2
Implementei o que precisava.Graças a Shai e seu exemplo.
Não usei as propriedades do tema e fiz todas as personalizações no código.Fiz isso porque não entendi como a configuração de UIID exclusiva pode me ajudar, já que o problema não está em identificar a UIID para a qual os adereços devem ser alterados, mas em identificar o estilo do botão a ser alterado.
Abaixo, algumas notas importantes da minha solução.
- Chame
addActionListener
para os botões DEPOIS que eles adicionaram às guias. - Quando qualquer botão da guia for pressionado, atualize os estilos NÃO SELECIONADOS dos botões da guia.Além disso, você pode alterar seus ícones.
- Chame o
repaint()
do formulário após a etapa 2.
Outras dicas
Você pode usar algumas abordagens diferentes, especialmente no 1.5.
LWUIT 1.5 tem um componente Tabs que faz praticamente tudo por você e é extremamente flexível.
Ele usa botões de opção nos quais o método setToggleButton(true)
é invocado.Os botões de alternância agem como botões de rádio, portanto, quando você pressiona um botão no grupo, ele permanece pressionado e é renderizado usando o estilo ToggleButton (você pode definir o UIID para o que quiser).Veja um exemplo de como usar os botões de alternância na parte de demonstração de fonte da demonstração LWUIT.
Uma opção que funcionará para versões mais antigas do LWUIT é apenas definir o UIID do botão para um valor diferente quando for pressionado (e restaurar o UIID do botão selecionado anteriormente para o valor original).