Resumen del capítulo 15. La interfaz interactiva
Nota:
Este libro se publicó en la primavera de 2016 y no se ha actualizado desde entonces. Gran parte del libro sigue siendo útil, pero algunos de los materiales están anticuados y algunos temas ya no son completamente correctos o completos.
En este capítulo se exploran ocho derivados de View
que permiten la interacción con el usuario.
Información general
Xamarin.Forms contiene 20 clases de las que se pueden crear instancias que se derivan de View
, pero no Layout
. Seis de ellas se han tratado en capítulos anteriores:
Label
: Capítulo 2. Anatomía de una aplicaciónBoxView
: Capítulo 3. Desplazamiento de la pilaButton
: Capítulo 6. Clics de botónImage
: Capítulo 13. Mapas de bitsActivityIndicator
: Capítulo 13. Mapas de bitsProgressBar
: Capítulo 14. AbsoluteLayout
Las ocho vistas de este capítulo permiten al usuario interactuar con los tipos de datos básicos de .NET:
Tipo de datos | Vistas |
---|---|
Double |
Slider , Stepper |
Boolean |
Switch |
String |
Entry , Editor , SearchBar |
DateTime |
DatePicker , TimePicker |
Estas vistas se pueden considerar como representaciones interactivas visuales de los tipos de datos subyacentes. Este concepto se analiza con más profundidad en el siguiente capítulo, Capítulo 16. Enlace de datos.
Las seis vistas restantes se describen en los capítulos siguientes:
WebView
: Capítulo 16. Enlace de datosPicker
: Capítulo 19. Vistas de colecciónListView
: Capítulo 19. Vistas de colecciónTableView
: Capítulo 19. Vistas de colecciónMap
: Capítulo 28. Ubicación y mapasOpenGLView
: No se trata en este libro (y no es compatible con las plataformas Windows).
Control deslizante y control de incremento
Tanto Slider
como Stepper
permiten al usuario elegir un valor numérico de un intervalo. Slider
es un intervalo continuo mientras que Stepper
implica valores discretos.
Aspectos básicos del control deslizante
Slider
es una barra horizontal que representa un intervalo de valores desde un mínimo a la izquierda a un máximo a la derecha. Define tres propiedades públicas:
Value
de tipodouble
, valor predeterminado de 0Minimum
de tipodouble
, valor predeterminado de 0Maximum
de tipodouble
, valor predeterminado de 1
Las propiedades enlazables que respaldan estas propiedades garantizan que son coherentes:
- Para las tres propiedades, el método
coerceValue
especificado para la propiedad enlazable garantiza queValue
se encuentra entreMinimum
yMaximum
. - El método
validateValue
deMinimumProperty
devuelvefalse
siMinimum
se establece en un valor mayor o igual queMaximum
, y similar paraMaximumProperty
. Al devolverfalse
desde el métodovalidateValue
, se generaArgumentException
.
Slider
activa el evento ValueChanged
con un argumento ValueChangedEventArgs
cuando cambia la propiedad Value
, ya sea mediante programación o cuando el usuario manipula Slider
.
En el ejemplo SliderDemo se muestra el uso simple de Slider
.
Dificultades habituales
Tanto en código como en XAML, las propiedades Minimum
y Maximum
se establecen en el orden especificado. Asegúrese de inicializar estas propiedades para que Maximum
sea siempre mayor que Minimum
. De lo contrario, se producirá una excepción.
La inicialización de las propiedades de Slider
puede hacer que cambie la propiedad Value
y se desencadene el evento ValueChanged
. Debe asegurarse de que el controlador de eventos Slider
no tenga acceso a las vistas que todavía no se han creado durante la inicialización de la página.
El evento ValueChanged
no se activa durante la inicialización de Slider
a menos que cambie la propiedad Value
. Puede llamar al controlador de ValueChanged
directamente desde el código.
Selección del color del control deslizante
El programa RgbSliders contiene tres elementos de Slider
que permiten seleccionar de forma interactiva un color mediante la especificación de sus valores RGB:
El ejemplo TextFade utiliza dos elementos Slider
para desplazar dos elementos Label
a través de un AbsoluteLayout
y atenuarlos en el otro.
La diferencia del control de incremento
Stepper
define las mismas propiedades y eventos que Slider
, pero la propiedad Maximum
se inicializa en 100 y Stepper
define una cuarta propiedad:
Increment
de tipodouble
, inicializado en 1
Visualmente, Stepper
se compone de dos botones con las etiquetas - y +. Al presionar - disminuye Value
en Increment
hasta un mínimo de Minimum
. Al presionar + se aumenta Value
en Increment
hasta un máximo de Maximum
.
Esto se muestra en el ejemplo StepperDemo.
Switch y CheckBox
Switch
permite al usuario especificar un valor booleano.
Conceptos básicos de Switch
Visualmente, Switch
se compone de un comando de alternancia que se puede desactivar y activar. La clase define una propiedad:
IsToggled
de tipobool
Switch
define un evento:
Toggled
acompañado de un objetoToggledEventArgs
, que se desencadena cuando cambia la propiedadIsToggled
.
El programa SwitchDemo muestra Switch
.
Un tradicional valor CheckBox
Algunos desarrolladores podrían preferir un elemento CheckBox
más tradicional para Switch
. La biblioteca Xamarin.FormsBook.Toolkit contiene una clase CheckBox
que se deriva de ContentView
. CheckBox
se implementa por los archivos CheckBox.xaml y CheckBox.xaml.cs. CheckBox
define tres propiedades (Text
, FontSize
y IsChecked
) y un evento CheckedChanged
.
En el ejemplo CheckBoxDemo se muestra este CheckBox
.
Escritura de texto
Xamarin.Forms define tres vistas que permiten al usuario escribir y editar texto:
Entry
para una única línea de textoEditor
para varias líneas de textoSearchBar
para una única línea de texto para fines de búsqueda.
Entry
y Editor
se derivan de InputView
, que se deriva de View
. SearchBar
se deriva directamente de View
.
Teclado y foco
En teléfonos y tabletas sin teclados físicos, los elementos Entry
, Editor
y SearchBar
hacen que aparezca un teclado virtual. La presencia de este teclado en la pantalla está relacionada con el foco de entrada. Una vista debe tener ambas propiedades IsVisible
y IsEnabled
establecidas en true
para obtener el foco de entrada.
Dos métodos, una propiedad de solo lectura y dos eventos, están implicados con el foco de entrada. Todos se definen mediante VisualElement
:
- El método
Focus
intenta establecer el foco de entrada en un elemento y devuelvetrue
si lo consigue. - El método
Unfocus
de quita el foco de entrada de un elemento. - La propiedad de solo lectura
IsFocused
indica si el elemento tiene el foco de entrada. - El evento
Focused
indica cuándo obtiene un elemento el foco de entrada. - El evento
Unfocused
indica cuándo pierde un elemento el foco de entrada.
Elección del teclado
La clase InputView
de la que se derivan Entry
y Editor
define solo una propiedad:
Indica el tipo de teclado que se muestra. Algunos teclados están optimizados para los URI o números.
La clase Keyboard
permite definir un teclado con un método Keyboard.Create
estático con un argumento de tipo KeyboardFlags
, una enumeración con las siguientes marcas de bits:
None
configurado en 0CapitalizeSentence
configurado en 1Spellcheck
configurado en 2Suggestions
establecido en 4All
configurado en \xFFFFFFFF
Si se usa Editor
cuando se espera un párrafo o más texto, la llamada a Keyboard.Create
es un buen enfoque para seleccionar un teclado. Para Entry
de una sola línea, son útiles las siguientes propiedades de solo lectura estáticas de Keyboard
:
KeyboardTypeConverter
permite especificar estas propiedades en XAML, tal y como se muestra en el programa EntryKeyboards.
Propiedades y eventos de entradas
Entry
de una única línea define las siguientes propiedades:
Text
de tipostring
, el texto que aparece enEntry
.TextColor
de tipoColor
FontFamily
de tipostring
FontSize
de tipodouble
FontAttributes
de tipoFontAttributes
IsPassword
de tipobool
, que hace que los caracteres estén enmascarados.Placeholder
de tipostring
, para el texto de color tenue que aparece enEntry
antes de que se escriba algoPlaceholderColor
de tipoColor
En Entry
también se definen dos eventos:
TextChanged
con un objetoTextChangedEventArgs
, que se desencadena cuando cambia la propiedadText
.Completed
, que se desencadena cuando el usuario finaliza y se descarta el teclado. El usuario indica la finalización de una manera específica de la plataforma.
En el ejemplo QuadraticEquations se muestran estos dos eventos.
La diferencia del editor
El elemento Editor
de varias líneas define las mismas propiedades Text
y Font
que Entry
, pero no las demás propiedades. Editor
también define las dos mismas propiedades que Entry
.
JustNotes es un programa de notas de formato libre que guarda y restaura el contenido de Editor
.
SearchBar
El elemento SearchBar
no se deriva de InputView
, por lo que no tiene una propiedad Keyboard
. Pero tiene todas las propiedades Text
, Font
y Placeholder
que define Entry
. Además, SearchBar
define tres propiedades adicionales:
CancelButtonColor
de tipoColor
SearchCommand
de tipoICommand
para su uso con enlaces de datos y MVVM.SearchCommandParameter
de tipoObject
, para su uso conSearchCommand
.
El botón para cancelar específico de la plataforma borra el texto. El elemento SearchBar
también tiene un botón de búsqueda específico de la plataforma. Al presionar cualquiera de estos botones, se produce uno de los dos eventos que define SearchBar
:
TextChanged
acompañado de un objetoTextChangedEventArgs
.SearchButtonPressed
En el ejemplo SearchBarDemo se muestra SearchBar
.
Selección de fecha y hora
Las vistas DatePicker
y TimePicker
implementan controles específicos de la plataforma que permiten al usuario especificar una fecha o una hora.
DatePicker
DatePicker
define cuatro propiedades:
MinimumDate
de tipoDateTime
, inicializado el 1 de enero de 1900.MaximumDate
de tipoDateTime
, inicializado el 31 de diciembre de 2100.Date
de tipoDateTime
, inicializado elDateTime.Today
.Format
de tipostring
, la cadena de formato de .NET inicializada en "d", el patrón de fecha corta, que da como resultado una fecha que se muestra como "7/20/1969" en Estados Unidos.
Puede establecer las propiedades de DateTime
en XAML si expresa las propiedades como elementos de propiedad y usa el formato de fecha corta ("7/20/1969") de referencia cultural invariable.
En el ejemplo DaysBetweenDates se calcula el número de días entre dos fechas seleccionadas por el usuario.
TimePicker (¿o es TimeSpanPicker?)
TimePicker
define dos propiedades y ningún evento:
Time
es de tipoTimeSpan
en lugar deDateTime
, que indica el tiempo transcurrido desde la medianoche.Format
de tipostring
, la cadena de formato .NET inicializada en "t", el patrón de hora corta, que da como resultado una hora que se muestra como "1:45 PM" en Estados Unidos.
El programa SetTimer muestra cómo utilizar TimePicker
para especificar una hora para un temporizador. El programa solo funciona si se mantiene en primer plano.
SetTimer también muestra cómo usar el método DisplayAlert
de Page
para mostrar un cuadro de alerta.