= Chapter 4 Notes (start on "Frame and BoxView) =
Title: '''Scrolling the Stack'''

== Summary ==
All about scrolling a page that doesn't fit on the screen.

=== Programming Concepts Summary ===
||'''Concept''' ||'''Page''' ||
|| New Layouts were introduced: {{{AbsoluteLayout, Grid, RelativeLayout, StackLayout}}}, we'll be focusing on {{{StackLayout}}} || 60 ||
|| Scrolling content - Using {{{LayoutOptions}}}.{{{[Start|Center|End|Fill]AndExpand}}} to allow the element that will scroll to fill the space || 70 ||
|| Reflection and Linq to objects to create a list of Labels that show the results of different options || 72 ||
|| {{{BoxView}}} is a filled rectangle || 74 ||
|| {{{Frame}}} is a Layout descendant that can contain a single view or another layout. Background is white on iPhone, but transparent on the others. || 72 ||


== Programs ==

=== ColorLoopPage ===
Page 61

Concepts:

 1. Colorizing text

Classes:

No new classes here. 


=== ColorList ===
Page 62

Concepts: A more painful way of creating the colorized text of the previous program

Classes: No new classes.


=== ReflectedColors ===
Page 65

Concepts:

 1. Reflection (See the .GetRuntimeFields() call)
 1. ScrollView - actually scrolling the page. 
 1. Luminosity of the font used to determine background color. 
 1. Used the Device to get a named font size {{{GentNamedSize}}}.

Classes:

 1. ScrollVew


=== VerticalOptionsDemo ===
Page

Concepts:

 1. Linq to objects to create an IEnumerable<Label> set.
 1. Reflection

Classes: No new classes yet. 

The image below shows the output. The Blue background text labels fit exactly the text contained in them. The yellow background text labels contain a label that has the "AndExpand" appended. These labels are not a different size (except the last one) but occupy a more spacious spot on the screen. The last one is a FillAndExpand and it actually does change the size of the Label because it fills the available space.  

{{attachment:VerticalOptionsForStackLayoutContents.png}}

=== FramedTextPage ===
Page 75

Concepts:

This is just a Demo of {{{BoxView}}}and {{{Frame}}}ed text. 

Classes:

 1. {{{BoxView}}}
 1. {{{Frame}}}

=== SizedBoxView (Can be skiped) ===
Page 78 - 80

Concepts:

 1. Demo's BoxView as only content. 
 1. Demo's BoxView default 40x40 size.
 1. Demo's WidthRequest and HeightRequest properties used for LayoutOpotions.Left|Right|Center. They contain "Request" because they are a request (over ridden by .Fill for example) and because Width and Height are read only. 
Classes:

No new classes.

=== ColorBlocks ===
Page 80 - 81

Note: Spend time on this one as it is an excellent example of a more complex layout. 

Concepts:

 1. Nested Layout concepts
 1. String.Format

Classes:

No new classes.


=== BlackCatPage ===
Page 83 - 86

Concepts:

 1. Scrolling text
 1. Reflection to get a text file resource - that is a text file stored in the program as a resource. 
 1. Reading from a Stream using a StreamReader
 1. using - I may have used this before, but this is a good place to talk about the using construct to define scope.
 

Classes:

 1. {{{ScrollView}}} allows a page to flow outside of the viewable area of the screen and for you to scroll through the page.