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?

Foi útil?

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.

  1. Chame addActionListener para os botões DEPOIS que eles adicionaram às guias.
  2. 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.
  3. 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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top