# Activity.xml ## Resources ### Colors, Style, Strings These resorsces are located in `app/src/main/res/values/.xml` `@color/colorName` -> access to *color definition* in `colors.xml` `@string/stringName` -> access to *string definition* in `strings.xml` (useful for localization) `@style/styleName` -> access to *style definition* in `styles.xml` In `colors.xml`: ```xml #6200EE #3700B3 #03DAC5 ``` In `strings.xml`: ```xml AppName ``` In `styles.xml`: ```xml ``` ## View & View Group A **View** contains a specific element of the layout. A **View Group** or **Layout** is a container of Views. ```xml ... ``` `android:layout_width`, `android:layout_heigth`: * fixed value (dp, sp) * match_parent * wrap_content ## ViewGroups ### [RelativeLayout](https://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams) The relative layout containing the view uses the value of these layout parameters to determine where to position the view on the screen. If the view is not contained within a relative layout, these attributes are ignored. ```xml ``` `android:layout_above`: Positions the bottom edge of this view above the given anchor view ID. `android:layout_alignBaseline`: Positions the baseline of this view on the baseline of the given anchor view ID. `android:layout_alignBottom`: Makes the bottom edge of this view match the bottom edge of the given anchor view ID. `android:layout_alignEnd`: Makes the end edge of this view match the end edge of the given anchor view ID. `android:layout_alignLeft`: Makes the left edge of this view match the left edge of the given anchor view ID. `android:layout_alignParentBottom`: If true, makes the bottom edge of this view match the bottom edge of the parent. `android:layout_alignParentEnd`: If true, makes the end edge of this view match the end edge of the parent. `android:layout_alignParentLeft`: If true, makes the left edge of this view match the left edge of the parent. `android:layout_alignParentRight`: If true, makes the right edge of this view match the right edge of the parent. `android:layout_alignParentStart`: If true, makes the start edge of this view match the start edge of the parent. `android:layout_alignParentTop`: If true, makes the top edge of this view match the top edge of the parent. `android:layout_alignRight`: Makes the right edge of this view match the right edge of the given anchor view ID. `android:layout_alignStart`: Makes the start edge of this view match the start edge of the given anchor view ID. `android:layout_alignTop`: Makes the top edge of this view match the top edge of the given anchor view ID. `android:layout_alignWithParentIfMissing`: If set to true, the parent will be used as the anchor when the anchor cannot be be found for layout_toLeftOf, layout_toRightOf, etc. `android:layout_below`: Positions the top edge of this view below the given anchor view ID. `android:layout_centerHorizontal`: If true, centers this child horizontally within its parent. `android:layout_centerInParent`: If true, centers this child horizontally and vertically within its parent. `android:layout_centerVertical`: If true, centers this child vertically within its parent. `android:layout_toEndOf`: Positions the start edge of this view to the end of the given anchor view ID. `android:layout_toLeftOf`: Positions the right edge of this view to the left of the given anchor view ID. `android:layout_toRightOf`: Positions the left edge of this view to the right of the given anchor view ID. `android:layout_toStartOf`: Positions the end edge of this view to the start of the given anchor view ID. ### [LinearLayout](https://developer.android.com/reference/android/widget/LinearLayout.LayoutParams) Layout that arranges other views either horizontally in a single column or vertically in a single row. ```xml ``` `android:layout_weight`: Indicates how much of the extra space in the LinearLayout is allocated to the view associated with these LayoutParams. `android:layout_margin`: Specifies extra space on the left, top, right and bottom sides of this view. `android:layout_marginBottom`: Specifies extra space on the bottom side of this view. `android:layout_marginEnd`: Specifies extra space on the end side of this view. `android:layout_marginHorizontal`: Specifies extra space on the left and right sides of this view. `android:layout_marginLeft`: Specifies extra space on the left side of this view. `android:layout_marginRight`: Specifies extra space on the right side of this view. `android:layout_marginStart`: Specifies extra space on the start side of this view. `android:layout_marginTop`: Specifies extra space on the top side of this view. `android:layout_marginVertical`: Specifies extra space on the top and bottom sides of this view. `android:layout_height`: Specifies the basic height of the view. `android:layout_width`: Specifies the basic width of the view. ## Views ```xml ``` ### TextView To add `...` to truncate a string: ```xml ``` ### ScrollView The scroll view can only have one child. If the child is a layout than the layout can contain many elements. ```xml ``` ### RecyclerView List of items In `build.gradle`: ```gradle dependencies { implementation "androidx.recyclerview:recyclerview:" // For control over item selection of both touch and mouse driven selection implementation "androidx.recyclerview:recyclerview-selection:" } ``` In `activity.xml`: ```xml ``` In `recyclerViewItem.xml`: ```xml ``` ### WebView ```xml ``` ## Constraints If a view is *anchored on both sides* and the width/height is set to `0dp` the view will expand to touch the elements to which is anchored.