Pergunta

Eu tenho a necessidade de criar um controle semelhante a Uitabbar no iPhone, que deve estar presente em todas as atividades do meu aplicativo. Uitabbar essencialmente é um Bateria de botões exibindo a ABA Como o comportamento: cada botão mapeia para uma atividade.

Eu tenho duas soluções para isso:

  1. No layout xml para cada atividade, eu insiro um <LinearLayout><Button/><Button/><Button/></LinearLayout> elemento. E depois tenha uma classe de ouvinte comum que manipule os cliques no botão. Portanto, toda atividade terá uma instância desse ouvinte.

  2. Para criar uma classe LinearLayout que estenda de widget personalizada, coloque todos os botões como membros estáticos e deixe -o lidar com os cliques do botão. Inclua esse controle personalizado em todas as tela.

Não tenho certeza de qual abordagem seguir. Conselho por favor. Alternativas também apreciadas

A seguir, o que penso acima das abordagens:
O problema com a primeira abordagem:

  1. Ele gerará muitos código de caldeira (FindViewByIds, SetonClickListener etc.)

  2. Supondo que haja 5 atividades e 3 botões de guia, o número total de objetos de botão criados em tempo de execução será de 5 x 3 = 15

Eu gostaria de adotar a segunda abordagem porque:

  1. Todo o código (estado e comportamento) será encapsulado pela classe Widget. Código menos caldeira.

  2. Como os botões serão membros estáticos, o número total de objetos de botão criados no tempo de execução será de apenas três. No entanto, os membros estáticos permanecerão na memória por mais tempo (até que a JVM descarregue a classe), uma vez que o controle está presente em todas as telas, acho que isso pode ser dispensado.

Obrigado.

Foi útil?

Solução 2

Infelizmente, não consegui encontrar uma maneira de personalizar o TabWidget embutido para parecer que o UITABBAR. Então, vou criar um controle personalizado e ter os botões como membros estáticos (adote a segunda abordagem). O controle lidará com os cliques conforme o esperado.
Percebi que o premiado aplicativo de arte Plink também tem um controle de guia semelhante ao iPhones UitabBar.

Outras dicas

Por que não usar a implementação do TabWidget existente no Android?

http://developer.android.com/guide/tutorials/views/hello-tabwidget.html

Não apenas a implementação do seu próprio widget é um trabalho extra, é provável que se sinta deslocado quando comparado com outros aplicativos na plataforma.

Em particular, aqui estão alguns problemas que vejo:

  1. Quando a aparência da barra da guia mudar devido a uma atualização do sistema, você precisará reescrever seu código. É improvável que você também corresponda exatamente à aparência da barra de guias embutida. (Pense em Java no OS X.)

  2. Toda vez que um usuário clica em uma guia, ele adicionará outra atividade à pilha. Isso não é apenas um desperdício de memória, mas toda vez que o usuário clica no botão Voltar no telefone, ele vai para a guia anterior. Não é assim que a barra de guias deve funcionar.

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