Spanish tabhost scroll (Solucionado)

josete

Member
Licensed User
Longtime User
He buscado informacion sobre el tabhost tipo como el de la playstore,es decir que permite cambiar entre los layouts cargados arrastrando a derecha o izquierda y no se si esta implementado en b4a (en el tutorial de erel sobre tabhost no lo he visto o con mi precario ingles se me ha pasado).Alguna pista o enlace donde poder investigar si se puede hacer?Seria la scrollable tabs:
http://developer.android.com/design/building-blocks/tabs.html
 

josete

Member
Licensed User
Longtime User
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
B4X:
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.
B4X:
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:
B4X:
pager.Initialize(container, "Pager")
Paso 4
Si queremos prescindir de las tabs superiores,podriamos insertar el objecto en la
Activity :
B4X:
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.
B4X:
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:
B4X:
Activity.AddView(pager, 0, 30dip, Activity.Width, Activity.Height-30dip)
Ejemplo completo:
B4X:
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.
 
Last edited:
Top