Bueno intentare hacer un minitutorial sobre como usar esta libreria para hacer tabhost deslizables ,ya que me parecio sencilla (puesto que entendi como funciona ,y normalmente me cuesta bastante...) y ademas me gustaria ahorrar dolores de cabeza ya que se por experiencia propia lo que es tener que batallar con tutoriales en ingles y ademas de entender lo que dice ,entender como lo hace.Al grano....
¿Que se necesita?
-La libreria AHViewPager2_02
http://www.b4x.com/android/forum/threads/ahviewpager-library-sliding-panels-now-perfect.14165/#content
para instalarla ,como siempre descomprimir y copiar los archivos .jar y .xml dentro de la carpeta libraries,en mi ordenador por ejemplo esta aqui:
C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries
-La libreria android-support-v4.jar library , ya que esta view esta basada en android 4 y se necesita para que soporte versiones anteriores a la 4
Hay que copiarla tambien en la carpeta libreries.Si no la tienes ,en el enlace anterior explica como conseguirla (El texto en rojo)
¿Como usarla?
-Esta libreria se basa principalmente en tres elementos:
AHViewPager ,que se podria decir que es el objeto principal que contiene todos los demas.
AHPageContainer ,es basicamente un contenedor de paginas (que pueden ser paneles en los que se carguen layouts).
AHViewPagerTabs ,que es la parte superior del tabhost ,que indica la pagina que se esta viendo actualmente,con el subrayado.Este elemento
es opcional,si no se pone solo tendremos los paneles deslizables.
Hay tambien un objeto
AHViewPagerFixedTabs que no he usado ya que se supone que es parecido al tabhost original que no es deslizable.
Paso 1
-Seleccionar la libreria AHViewPager en el proyecto (A la derecha ,abajo,pestaña libs ) y añadir las variables correspondientes en Sub Globals
Sub Globals
Dim container As AHPageContainer
Dim pager As AHViewPager
'Optionally you can use an AHViewPagerTabs object as a page indicator
Dim tabs As AHViewPagerTabs
End Sub
Paso 2
-Inicializar el AHPageContainer ,crear los paneles y añadirlos al AHPageContainer
en este caso se crean 5 paneles con colores al azar y se añaden al AHPageContainer.En
lo paneles se pueden añadir views o cargar un layout.
container.Initialize
For i = 1 To 5
Dim pan As Panel
pan.Initialize("pan")
pan.Color = Colors.RGB(Rnd(0, 150), Rnd(0,150), Rnd(0,150))
container.AddPage(pan,"Pagina" & i) 'Se añade la pagina al AHPageContainer
Next
Paso 3
-Cuando ya tengamos el contenido creado,ya se puede inicializar el AHViewPager
pasandole como parametros la variable container(el AHPageContainer) y un nombre
sus eventos:
pager.Initialize(container, "Pager")
Paso 4
Si queremos prescindir de las tabs superiores,podriamos insertar el objecto en la
Activity :
Activity.AddView(pager, 0, 0, Activity.Width, Activity.Height)
y ya tendriamos lista la aplicacion,Pero si queremos añadir las tabs,hay que hacerlo
antes de añadir el pager(AHViewPager) a la Activity,es decir saltarnos este
paso e ir al 5
Paso 5
-Inicializar el AHViewPagerTabs (recordemos ,la variable tabs) pasandole como
parametro el pager (AHViewPager) y le indicamos el alto de la barra debajo del titulo
del panel que estmos viendo (5dip por ejemplo) y se añade a la Activity.
tabs.Initialize(pager)
tabs.LineHeight = 5dip
Activity.AddView(tabs, 0, 0, 100%x, 30dip)
Paso 6
-Una vez el AHViewPager completo ,ya se puede añadir a la Activity,teniendo en cuenta
la altura que le dimos al tab (30dip) para descontarlo:
Activity.AddView(pager, 0, 30dip, Activity.Width, Activity.Height-30dip)
Ejemplo completo:
Sub Process_Globals
End Sub
Sub Globals
Dim container As AHPageContainer
Dim pager As AHViewPager
'Optionally you can use an AHViewPagerTabs object as a page indicator
Dim tabs As AHViewPagerTabs
End Sub
Sub Activity_Create(FirstTime As Boolean)
container.Initialize
For i = 1 To 5
Dim pan As Panel
pan.Initialize("pan")
pan.Color = Colors.RGB(Rnd(0, 150), Rnd(0,150), Rnd(0,150))
container.AddPage(pan,"Pagina" & i) 'Se añade la pagina al AHPageContainer
Next
pager.Initialize(container, "Pager")
tabs.Initialize(pager)
tabs.LineHeight = 5dip
Activity.AddView(tabs, 0, 0,100%x, 30dip)
Activity.AddView(pager, 0, 30dip, Activity.Width, Activity.Height-30dip)
End Sub
y listo!!!!
Esta libreria ha sido creada por
Corwin42,agradecedselo a el .El ejemplo que pongo esta basado en el ejemplo que viene con la liberia ,obviando algunas cosas para hacerlo mas sencillo.