Pregunta

Tengo una necesidad de crear un control similar al UITabBar en el iPhone, que es estar presente en todas las actividades de mi solicitud. UITabBar esencialmente es un de la batería de los botones que muestra un como el comportamiento:. Cada botón se asigna a una actividad

Tengo dos soluciones para esto:

  1. En el diseño de XML para cada actividad, inserto un elemento <LinearLayout><Button/><Button/><Button/></LinearLayout>. Y luego tener una clase de escucha común que se encargará de que el botón. Por lo tanto, todas las actividades tendrán una instancia de este oyente.

  2. Para crear una clase personalizada que se extiende LinearLayout Widget, poner todos los botones ya que sus miembros estáticos y se deja manejar las pulsaciones de botón. Incluir este control personalizado en cada pantalla.

No estoy seguro de cuál es el enfoque a seguir. Por favor aconséjame. Alternativas también aprecia

Lo que sigue es lo que pienso sobre los enfoques anteriores:
El problema con el primer enfoque:

  1. Se generará una gran cantidad de código repetitivo (findViewByIds, setOnClickListener etc.)

  2. Suponiendo que hay 5 actividades y 3 botones TAB, el número total de objetos de botón creados en tiempo de ejecución será de 5 x 3 = 15

Me gustaría tomar el segundo enfoque, ya que:

  1. Todo el código (estado y comportamiento) será encapsulado por la clase del widget. Menos código repetitivo.

  2. Desde los botones serán miembros estáticos, el número total de objetos Button creados durante la ejecución será sólo tres sea. Sin embargo, los miembros estáticos permanecerá en la memoria durante un tiempo más largo (hasta JVM descarga la clase), ya que el control está presente en todas las pantallas Creo que esto puede ser excusado.

Gracias.

¿Fue útil?

Solución 2

Por desgracia, no pude encontrar una forma de personalizar la incorporada en TabWidget para que se vea como UITabBar. Por lo tanto, voy a crear un control personalizado y tienen los botones como miembros estáticos (toman el segundo enfoque). El control se encargará de los clics como se esperaba.
He notar que la premiada aplicación Plink Art también tiene un control de ficha que es similar a los iPhones UITabBar.

Otros consejos

¿Por qué no utilizar la implementación TabWidget existente en Android?

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

No sólo es la implementación de su propio widget trabajo extra, es probable que se sienta fuera de lugar cuando se compara con otras aplicaciones en la plataforma.

En particular, aquí hay algunos problemas que veo:

  1. Cuando el aspecto de los cambios en la barra de pestañas, debido a una actualización del sistema, tendrá que volver a escribir el código. Usted es también poco probable que coincidir exactamente con el aspecto de la construcción en la barra de pestañas. (Piense en Java en OS X).

  2. Cada vez que un usuario hace clic en una pestaña, que se sumará otra actividad a la pila. Esto no sólo es una pérdida de memoria, pero cada vez que el usuario hace clic en el botón de vuelta en el teléfono, se ve a la pestaña anterior. Esta no es la forma en la barra de pestañas se supone que funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top