= Chapter 15 Notes =

Title: '''The Interactive Interface'''

== Summary ==

So much ado about Labels and the text in them.

=== Programming Concepts Summary ===

Eight Views for this chapter.

|| '''Data Type''' || '''Views''' ||
|| {{{Double}}} || {{{Slider}}}, {{{Stepper}}} ||
|| {{{Boolean}}} || {{{Switch}}} ||
|| {{{String}}} || {{{Entry}}}, {{{Editor}}}, {{{SearchBar}}} ||
|| {{{DateTime}}} || {{{DatePicker}}}, {{{TimePicker}}}||

Additional views covered later

 * {{{WebView}}}
 * {{{Picker}}}
 * {{{ListView}}}
 * {{{TableView}}}

Not covered:

 * Map
 * {{{OpenGLView}}}

== Programs ==

=== Program SliderDemo ===

Page 372.

Concepts:

 1. Three public properties
    1. Minimum
    1. Maximum
    1. Value
 1. fires ValueChanged
 1. {{{ValueChangedEventArgs}}} has two values named {{{OldValue}}} and {{{NewValue}}}.
 1. recommend you add some padding at the left and right. 

Pitfalls: Set the Maximum first, setting minimum greater than the default maximum causes an error. I.e. maximum > minimum == true. 

Also: 

{{attachment:pitfalls.png}}
 
Classes: 

 1. Slider

=== Program RgbSliders ===

Page 377.

Concepts:

 1. Demo's slider with Color classes. 

=== Program TextFade ===

Page 380.

 1. Another slider demo on the alpha channel.

=== Program StepperDemo ===

Page 383.

Concepts:

 * Adds an '''Increment''' property to allow an incremental value other than 1.

=== Program SwitchDemo ===

Page 385.

Concepts:

Introduces the {{{Switch}}}

 1. Property: {{{IsToggled}}} of type bool.
 1. Event: Toggled

Classes: 

 1. Switch

=== Program CheckBoxDemo ===

Page 387.

Concepts:

 1. Properties:
    1. {{{Text}}}
    1. {{{FontSize}}}
    1. {{{IsChecked}}}
 1. Event: {{{IsCheckedChanged}}}

Classes:

 1. {{{CheckBox}}} is similar to the the switch, but the text identifier is par to of the visual. 


== Typing Text ==

 * Entry (Horizontal scrolling)
 * Editor ((Default wrapping and vertical scrolling)
 * SearchBar (Horizontal scrolling)

Methods/Properties:

 * Focus --> returns true if element receives focus
 * UnFocus --> removes input focus from element
 * IsFocused --> read only, true if visual element currently has input focus
 * Focused --> Event is fired when a visual element acquires input focus. 
 * Unfocused --> Event is fired when a visual element loses input focus.
 * Property --> Keyboard, tells about the type of 

There exists different keyboards 
 * Default
 * Text
 * Chat
 * Url
 * Email
 * Telephone
 * Numeric (positive numbers only)

=== Program EntryKeyboards ===

Page 395.

Concepts:

 1. You don’t want to set HorizontalOptions on an Entry to Left, Cen-ter, or Right unless you 
also set the WidthRequest property
 1. Hence, always put data entry views in a scroll view!

Properties:

 1. Text - the string that appears in the Entry
 1. TextColor - a Color value
 1. IsPassword - a Boolean that causes characters to be masked right after they’re typed
 1. Placeholder - light-colored text that appears in the Entry but disappears as soon as the user begins typing.

Events:

 1. TextChanged
 1. Completed

Classes: Entry

=== Program QuadraticEquations ===

Page 397.

Notice the platform-specific WidthRequest setting in the implicit Style for the Entry. This gives each Entry a one-inch width.

Concepts:

 1. Demo of Entry. 

=== Program JustNotes ===

Page 404.

This is the most basic program that Android starts with on their site...

Another simple demo of the Entry. Introduces Keyboard configuration.

=== Program SearchBar ===

Page 406.

Concepts:

 1. Demos a search bar for searching a text document.

Classes:

 1. {{{SearchBar}}}

=== Program DaysBetweenDates ===

Page 411.

Concepts:

 1. Demos {{{DatePicker}}}.
 1. Calculates days between dates.

Classes:

 1. {{{DatePicker}}}

=== Program SetTimer ===

Page 415.

Concepts: 

 1. How to display an alert. 
 1. How to use the {{{TimePicker}}}

Classes:

 1. {{{DisplayAlert}}} page 416.