|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

15.- Paneles con pestañas. TabHost.

- Bajar el código: TabHost.zip

- Tutorial. Estudio del TabHost. Orientación horizontal-vertical

- Presentación.

- El TabHost es parecido a los Paneles. Consiste en una serie de botones superiores o pestañas que al pulsarlos entra en distintas pantallas.

Creamos los controles





- El programa carga el Layout principal llamado "main".

- Luego añade añade los distintos Layout mediante: TabHost1.AddTab("Color", "page2")

- Si quisieramos tener más pestañas, crearíamos más Layout, le daríamos un nombre y lo añadiríamos.

- En la primera pestaña además carga un par de iconos bmp1 y bmp2:
TabHost1.AddTabWithIcon ("Name", bmp1, bmp2, "page1")

- Los botones hacen cambiar los distintos Layout:

Sub btnNext1_Click
TabHost1.CurrentTab = 1 'move to next tab
End Sub

- El botón btnDone, crea una ventana emergente con distintas cadenas de caracteres

Sub btnDone_Click
Dim sb As StringBuilder
sb.Initialize
sb.Append("You have entered:").Append(CRLF)
sb.Append("Name: ").Append(txtName.Text).Append(CRLF)
sb.Append("Color: ").Append(txtColor.Text).Append(CRLF)
sb.Append("Animal: ").Append(txtAnimal.Text)
Msgbox(sb.ToString, "")
End Sub

 


El TabHost viene muy bien explicado en el Tutorial Basic4Android,

Así que me voy a basar en ese ejemplo.

Entramos en el código y pulsamos el icono de forma de carpeta situado abajo del panel derecho.
Observamos que el programa está compuesto por varios Layout, en este caso se llaman main.bal, page1.bal, page2.bal y page3.bal

Podemos entrar en los distintos Layout, yendo a Designer / File / Open

.

Este es el Larout principal, su nombre es main.bal y consta de un TabHost.

Este Layout se llama page1.bal y consta de un Label, EditText y un Button.
Al Button lo denomina: btnNext1
Al EditText lo denomina: txtName

Este Layout se llama page2.bal y consta de un Label, EditText y un Button.
Al Button lo denomina: btnNext2
Al EditText lo denomina: txtColor
El Activity tiene un degradado de rojo.

Este Layout se llama page3.bal y consta de un Label, EditText y un Button.
Al Button lo denomina: btnDone
Al EditText lo denomina: txtAnimal
El Activity tiene un degradado de negro a blanco vertical


______________________________________________
______________________________________________

- Cuando el teléfono cambia su orientación horizontal/vertical, el programa hace una especie de reinicio y pierde el valor de las variables y la ubicación de los controles.

_______________________
- Orientación horizontal / vertical.

NOTA: Este tutorial se complementa con otro llamado 59.- Orientación. Horizontal - Vertical.

Otro asunto importante es la situación de los elementos (View) cuando el teléfono está verticalmente (portrait - foto) u horizontalmente (landscape -paisaje).

Para ello debemos añadir en el Designer una nueva Layout Variants, esto hará que cuando el teléfono esté en vertical los elementos salgan en un lugar y cuando esté en horizontal se ubiquen en otro elegido.

- Si estás utilizando el emulador del SDK verás que según elijas un Layout Variants u otro, los elementos se pueden situar en distinto sitio, uno para el vertical y otro para el horizontal.

NOTA: Para que el emulador se vea en horizontal/vertical, pulsa las teclas: Ctrl + F11

- Si estás utilizando el emulador del Designer que viene a partir de la versión 1.7 de B4A, debes marcar la opción Layout / Match Chosen Variant. En las nuevas guías de principiante, concretamente en la sección 8.7.1 The menu, viene la explicación de cómo hacerlo. La guía de B4A se actualiza cada cierto tiempo, bájate la última actualización.

En resumidas cuentas, debemos tener dos situaciones de los elementos una en vertical y otra en horizontal, pero en el mismo Layout.

__________________________________________
- Proceso de construcción de los layout en horizontal y vertical.

(En otro tutorial veremos más sobre la ubicación de los controles en la pantalla)

Bajar TabHost_Horizontal_Vertical.zip

- Utilizaremos dos Variants.

1.- Creamos mediante el Designer un layout, vertical 320 x 480 e insertamos el View Tabhost1.

Redimensionamos el Tabhost1 para que ocupe todo el Activity.
Guardamos este Designer como Layout

EMULADOR

2.- Pulsamos en New Variants y creamos un layout horizontal de 480 x 320.

Pulsamos la combinación de teclas Ctrl + F11 para que el emulador se ponga en horizontal.

Reubicamos el Tabhost1 para que ocupe toda la horizontal.

Guardamos el layout. Atención el layout es el mismo de antes(Layout). Es decir, tenemos el mismo layout en horizontal y en vertical.

 

3.- En el Designer vamos a File / New y creamos otro layout.
Nuestro layout debe estar en 320 x 480

Atenciòn, debemos pulsar la combinación de teclas Ctrl + F11 para que el emulador se ponga en vertical.

Añadimos y ubicamos un Label1, un EditText1, un Button1 y un Label2.

Guardamos este layout con el nombre de uno.

4.- Pulsamos en New Variants y creamos un layout horizontal de 480 x 320.

Pulsamos la combinación de teclas Ctrl + F11 para que el emulador se ponga en horizontal.

Reubicamos Label1, un EditText1, un Button1 y un Label2, para situarlos en los lugares convenientes.

Guardamos el layout. Atención el layout es el mismo de antes (uno). Es decir, tenemos el mismo layout en horizontal y en vertical.

5.- En el Designer vamos a File / New y creamos otro layout.
Nuestro layout debe estar en 320 x 480

Atenciòn, debemos pulsar la combinación de teclas Ctrl + F11 para que el emulador se ponga en vertical.

Añadimos y ubicamos un Label1, un EditText2, un Button2 y un Label4.

He cambiado el número del EditText2, Button2 y Label4 para que no coincidan con el layout uno

Guardamos este layout con el nombre de dos.

6.- Pulsamos en New Variants y creamos un layout horizontal de 480 x 320.

Pulsamos la combinación de teclas Ctrl + F11 para que el emulador se ponga en horizontal.

Reubicamos Label1, EditText2, Button2 y Label4, para situarlos en los lugares convenientes.

Guardamos el layout. Atención el layout es el mismo de antes (dos). Es decir, tenemos el mismo layout en horizontal y en vertical.

Ya tenemos los 3 layout en horizontal (480 x 320) y vertical (320 x 480)

Código
' Juan Antonio Villalpando
' juana1991@yahoo.com

Sub Process_Globals
Dim valor1, valor2 As String
End Sub

Sub Globals
Dim Tabhost1 As TabHost
Dim EditText1, EditText2 As EditText
Dim Label2, Label4 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
      Activity.LoadLayout("Layout")
      TabHost1.addtab("UNO","uno")
      TabHost1.addtab("DOS","dos")
 If FirstTime = True Then
      valor1 = "0"
      valor2 = "0"      
    End If
End Sub

Sub Activity_Resume
    Activity.LoadLayout("Layout")
    TabHost1.addtab("UNO","uno")
    TabHost1.addtab("DOS","dos")
    EditText1.Text = valor1
    Label2.Text = "Tu nombre es " & valor1
    EditText2.Text = valor2
    Label4.Text = "Tu edad es " & valor2
End Sub

Sub Button1_Click
    valor1 = EditText1.Text
    Label2.Text = "Tu nombre es " & valor1
End Sub

Sub Button2_Click
    valor2 = EditText2.Text
    Label4.Text = "Tu edad es " & valor2
End Sub

 

 

- Cuando el teléfono cambia su orientación horizontal/vertical, el programa hace una especie de reinicio y pierde el valor de las variables y la ubicación de los controles.

- Para evitarlo, se crea, de cada layout, uno vertical y otro horizontal.

- Al cambiar la ubicación el programa va a la Subrutina Activity_Resume
en ella debemos poner lo que deseamos que ocurra cuando se cambia la orientación, en nuestro caso volver a cargar el layout principal y volver a colocar las variables.

- Es conveniente que las variables estén declaradas al principio en
Sub Process_Globals

 

- Una vez más recuerdo que trato de escribir un código sencillo y entendible, en una etapa superior es mejorable.


Foro B4A

_________________________________________________
- Detección de si el móvil está en horizontal o vertical.

Dim  Orientation  As String
If  Activity.Width > Activity.Height  Then
     Orientation =  " Landscape "
Else
     Orientation =  " Portrait "
End If

_________________________________________________
- Otra manera de detectar cuando el móvil está en horizontal o en vertical

If GetDeviceLayoutValues.Height > GetDeviceLayoutValues.Width Then
'portrait orientation
Activity.AddView(lblPlayer, 20dip, 10dip, 200dip, 400dip)
Else
'landscape orientation
Activity.AddView(lblPlayer, 2dip, 10dip, offsetX - 15dip, 200dip)
End If

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información