Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
Valuede tipodouble, valor predeterminado de 0Minimumde tipodouble, valor predeterminado de 0Maximumde tipodouble, valor predeterminado de 1
Las propiedades enlazables que respaldan estas propiedades garantizan que son coherentes:
- Para las tres propiedades, el método
coerceValueespecificado para la propiedad enlazable garantiza queValuese encuentra entreMinimumyMaximum. - El método
validateValuedeMinimumPropertydevuelvefalsesiMinimumse establece en un valor mayor o igual queMaximum, y similar paraMaximumProperty. Al devolverfalsedesde 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:
Incrementde 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:
IsToggledde tipobool
Switch define un evento:
Toggledacompañ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, FontSizey 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:
Entrypara una única línea de textoEditorpara varias líneas de textoSearchBarpara 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
Focusintenta establecer el foco de entrada en un elemento y devuelvetruesi lo consigue. - El método
Unfocusde quita el foco de entrada de un elemento. - La propiedad de solo lectura
IsFocusedindica si el elemento tiene el foco de entrada. - El evento
Focusedindica cuándo obtiene un elemento el foco de entrada. - El evento
Unfocusedindica 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:
Noneconfigurado en 0CapitalizeSentenceconfigurado en 1Spellcheckconfigurado en 2Suggestionsestablecido en 4Allconfigurado 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:
Textde tipostring, el texto que aparece enEntry.TextColorde tipoColorFontFamilyde tipostringFontSizede tipodoubleFontAttributesde tipoFontAttributesIsPasswordde tipobool, que hace que los caracteres estén enmascarados.Placeholderde tipostring, para el texto de color tenue que aparece enEntryantes de que se escriba algoPlaceholderColorde tipoColor
En Entry también se definen dos eventos:
TextChangedcon 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:
CancelButtonColorde tipoColorSearchCommandde tipoICommandpara su uso con enlaces de datos y MVVM.SearchCommandParameterde 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:
TextChangedacompañ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:
MinimumDatede tipoDateTime, inicializado el 1 de enero de 1900.MaximumDatede tipoDateTime, inicializado el 31 de diciembre de 2100.Datede tipoDateTime, inicializado elDateTime.Today.Formatde 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:
Timees de tipoTimeSpanen lugar deDateTime, que indica el tiempo transcurrido desde la medianoche.Formatde 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.
