<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2015 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
-->
<resources>

    <declare-styleable name="FloatingActionButton">
        <!-- Background for the FloatingActionButton -->
        <attr name="android:background" />
        <attr name="backgroundTint" />
        <attr name="backgroundTintMode" />

        <!-- Ripple color for the FAB. -->
        <attr name="rippleColor" format="color|reference" />
        <!-- Size for the FAB. -->
        <attr name="fabSize">
            <enum name="normal" value="0" />
            <enum name="mini" value="1" />
        </attr>
        <!-- Elevation value for the FAB -->
        <attr name="elevation" />
        <!-- TranslationZ value for the FAB when pressed-->
        <attr name="pressedTranslationZ" format="dimension|reference" />
    </declare-styleable>

    <declare-styleable name="ScrimInsetsFrameLayout">
        <attr name="insetForeground" format="color|reference" />
    </declare-styleable>

    <declare-styleable name="NavigationView">
        <attr name="android:elevation" />
        <attr name="android:background" />
        <attr name="android:fitsSystemWindows" />
        <attr name="android:maxWidth" />
        <attr name="itemTint" format="color|reference" />
        <attr name="itemBackground" format="reference" />
    </declare-styleable>

    <declare-styleable name="TabLayout">
        <attr name="tabIndicatorColor" format="color" />
        <attr name="tabIndicatorHeight" format="dimension" />
        <attr name="tabContentStart" format="dimension" />

        <attr name="tabBackground" format="reference" />

        <attr name="tabMode">
            <enum name="scrollable" value="0" />
            <enum name="fixed" value="1" />
        </attr>

        <!-- Standard gravity constant that a child supplies to its parent.
             Defines how the child view should be positioned, on both the X and Y axes,
             within its enclosing layout. -->
        <attr name="tabGravity">
            <enum name="fill" value="0"/>
            <enum name="center" value="1"/>
        </attr>

        <attr name="tabMinWidth" format="dimension" />
        <attr name="tabMaxWidth" format="dimension" />

        <attr name="tabTextAppearance" format="reference" />
        <attr name="tabSelectedTextColor" format="color" />

        <attr name="tabPaddingStart" format="dimension" />
        <attr name="tabPaddingTop" format="dimension" />
        <attr name="tabPaddingEnd" format="dimension" />
        <attr name="tabPaddingBottom" format="dimension" />
        <attr name="tabPadding" format="dimension" />
    </declare-styleable>

    <declare-styleable name="CoordinatorLayout">
        <!-- A reference to an array of integers representing the
             locations of horizontal keylines in dp from the starting edge.
             Child views can refer to these keylines for alignment using
             layout_keyline="index" where index is a 0-based index into
             this array. -->
        <attr name="keylines" format="reference" />
    </declare-styleable>

    <declare-styleable name="CoordinatorLayout_LayoutParams">
        <attr name="android:layout_gravity" />
        <!-- The class name of a Behavior class defining special runtime behavior
             for this child view. -->
        <attr name="layout_behavior" format="string" />
        <!-- The id of an anchor view that this view should position relative to. -->
        <attr name="layout_anchor" format="reference" />
        <!-- The index of a keyline this view should position relative to.
             android:layout_gravity will affect how the view aligns to the
             specified keyline. -->
        <attr name="layout_keyline" format="integer" />

        <!-- Specifies how an object should position relative to an anchor, on both the X and Y axes,
             within its parent's bounds.  -->
        <attr name="layout_anchorGravity">
            <!-- Push object to the top of its container, not changing its size. -->
            <flag name="top" value="0x30" />
            <!-- Push object to the bottom of its container, not changing its size. -->
            <flag name="bottom" value="0x50" />
            <!-- Push object to the left of its container, not changing its size. -->
            <flag name="left" value="0x03" />
            <!-- Push object to the right of its container, not changing its size. -->
            <flag name="right" value="0x05" />
            <!-- Place object in the vertical center of its container, not changing its size. -->
            <flag name="center_vertical" value="0x10" />
            <!-- Grow the vertical size of the object if needed so it completely fills its container. -->
            <flag name="fill_vertical" value="0x70" />
            <!-- Place object in the horizontal center of its container, not changing its size. -->
            <flag name="center_horizontal" value="0x01" />
            <!-- Grow the horizontal size of the object if needed so it completely fills its container. -->
            <flag name="fill_horizontal" value="0x07" />
            <!-- Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. -->
            <flag name="center" value="0x11" />
            <!-- Grow the horizontal and vertical size of the object if needed so it completely fills its container. -->
            <flag name="fill" value="0x77" />
            <!-- Additional option that can be set to have the top and/or bottom edges of
                 the child clipped to its container's bounds.
                 The clip will be based on the vertical gravity: a top gravity will clip the bottom
                 edge, a bottom gravity will clip the top edge, and neither will clip both edges. -->
            <flag name="clip_vertical" value="0x80" />
            <!-- Additional option that can be set to have the left and/or right edges of
                 the child clipped to its container's bounds.
                 The clip will be based on the horizontal gravity: a left gravity will clip the right
                 edge, a right gravity will clip the left edge, and neither will clip both edges. -->
            <flag name="clip_horizontal" value="0x08" />
            <!-- Push object to the beginning of its container, not changing its size. -->
            <flag name="start" value="0x00800003" />
            <!-- Push object to the end of its container, not changing its size. -->
            <flag name="end" value="0x00800005" />
        </attr>
    </declare-styleable>

    <declare-styleable name="TextInputLayout">
        <attr name="hintTextAppearance" format="reference" />
        <!-- The hint to display in the floating label -->
        <attr name="android:hint" />
        <!-- Whether the layout is laid out as if an error will be displayed -->
        <attr name="errorEnabled" format="boolean" />
        <!-- TextAppearance of any error message displayed -->
        <attr name="errorTextAppearance" format="reference" />
    </declare-styleable>

    <declare-styleable name="SnackbarLayout">
        <attr name="android:maxWidth" />
        <attr name="maxActionInlineWidth" format="dimension" />
    </declare-styleable>

</resources>

