<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2006 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.
-->

<!-- Formatting note: terminate all comments with a period, to avoid breaking
     the documentation output. To suppress comment lines from the documentation
     output, insert an eat-comment element after the comment lines.
-->

<resources>
    <!-- These are the standard attributes that make up a complete theme. -->
    <declare-styleable name="Theme">
        <!-- ============== -->
        <!-- Generic styles -->
        <!-- ============== -->
        <eat-comment />

        <!-- Specifies that a theme has a light background with dark text on top.  -->
        <attr name="isLightTheme" format="boolean" />

        <!-- Default color of foreground imagery. -->
        <attr name="colorForeground" format="color" />
        <!-- Default color of foreground imagery on an inverted background. -->
        <attr name="colorForegroundInverse" format="color" />
        <!-- Default color of background imagery, ex. full-screen windows. -->
        <attr name="colorBackground" format="color" />
        <!-- Default color of background imagery for floating components, ex. dialogs, popups, and cards. -->
        <attr name="colorBackgroundFloating" format="color" />
        <!-- This is a hint for a solid color that can be used for caching
             rendered views.  This should be the color of the background when
             there is a solid background color; it should be null when the
             background is a texture or translucent.  When a device is able
             to use accelerated drawing (thus setting state_accelerated), the
             cache hint is ignored and always assumed to be transparent. -->
        <attr name="colorBackgroundCacheHint" format="color" />

        <!-- Default highlight color for items that are pressed. -->
        <attr name="colorPressedHighlight" format="color" />
        <!-- Default highlight color for items that are long-pressed. -->
        <attr name="colorLongPressedHighlight" format="color" />
        <!-- Default highlight color for items that are
             focused. (Focused meaning cursor-based selection.) -->
        <attr name="colorFocusedHighlight" format="color" />
        <!-- Default highlight color for items that are
             activated. (Activated meaning persistent selection.) -->
        <attr name="colorActivatedHighlight" format="color" />
        <!-- Default highlight color for items in multiple selection
             mode. -->
        <attr name="colorMultiSelectHighlight" format="color" />

        <!-- Drawable to be drawn over the view to mark it as autofilled-->
        <attr name="autofilledHighlight" format="reference" />

        <!-- Max width of the autofill data set picker as a fraction of the screen width -->
        <attr name="autofillDatasetPickerMaxWidth" format="reference" />

        <!-- Max height of the autofill data set picker as a fraction of the screen height -->
        <attr name="autofillDatasetPickerMaxHeight" format="reference" />

        <!-- Max height of the the autofill save custom subtitle as a fraction of the screen width/height -->
        <attr name="autofillSaveCustomSubtitleMaxHeight" format="reference" />

        <!-- Default disabled alpha for widgets that set enabled/disabled alpha programmatically. -->
        <attr name="disabledAlpha" format="float" />
        <!-- The alpha applied to the foreground color to create the primary text color. -->
        <attr name="primaryContentAlpha" format="float" />
        <!-- The alpha applied to the foreground color to create the secondary text color. -->
        <attr name="secondaryContentAlpha" format="float" />
        <!-- Color used for error states and things that need to be drawn to
             the users attention.. -->
        <attr name="colorError" format="reference|color" />
        <!-- Default background dim amount when a menu, dialog, or something similar pops up. -->
        <attr name="backgroundDimAmount" format="float" />
        <!-- Control whether dimming behind the window is enabled.  The default
             theme does not set this value, meaning it is based on whether the
             window is floating. -->
        <attr name="backgroundDimEnabled" format="boolean" />

        <!-- =========== -->
        <!-- Text styles -->
        <!-- =========== -->
        <eat-comment />

        <!-- Default appearance of text: color, typeface, size, and style. -->
        <attr name="textAppearance" format="reference" />
        <!-- Default appearance of text against an inverted background:
             color, typeface, size, and style. -->
        <attr name="textAppearanceInverse" format="reference" />

        <!-- The most prominent text color.  -->
        <attr name="textColorPrimary" format="reference|color" />
        <!-- Secondary text color. -->
        <attr name="textColorSecondary" format="reference|color" />
        <!-- Tertiary text color. -->
        <attr name="textColorTertiary" format="reference|color" />

        <!-- Primary inverse text color, useful for inverted backgrounds. -->
        <attr name="textColorPrimaryInverse" format="reference|color" />
        <!-- Secondary inverse text color, useful for inverted backgrounds. -->
        <attr name="textColorSecondaryInverse" format="reference|color" />
        <!-- Tertiary inverse text color, useful for inverted backgrounds. -->
        <attr name="textColorTertiaryInverse" format="reference|color" />

        <!-- Inverse hint text color. -->
        <attr name="textColorHintInverse" format="reference|color" />

        <!-- Bright text color. Only differentiates based on the disabled state. -->
        <attr name="textColorPrimaryDisableOnly" format="reference|color" />

        <!-- Bright inverse text color. Only differentiates based on the disabled state. -->
        <attr name="textColorPrimaryInverseDisableOnly" format="reference|color" />

        <!-- Bright text color. This does not differentiate the disabled state. As an example,
             buttons use this since they display the disabled state via the background and not the
             foreground text color. -->
        <attr name="textColorPrimaryNoDisable" format="reference|color" />
        <!-- Dim text color. This does not differentiate the disabled state. -->
        <attr name="textColorSecondaryNoDisable" format="reference|color" />

        <!-- Bright inverse text color. This does not differentiate the disabled state. -->
        <attr name="textColorPrimaryInverseNoDisable" format="reference|color" />
        <!-- Dim inverse text color. This does not differentiate the disabled state. -->
        <attr name="textColorSecondaryInverseNoDisable" format="reference|color" />

        <!-- Bright text color for use over activated backgrounds. -->
        <attr name="textColorPrimaryActivated" format="reference|color" />
        <!-- Dim text color for use over activated backgrounds. -->
        <attr name="textColorSecondaryActivated" format="reference|color" />

        <!-- Text color for urls in search suggestions, used by things like global search and the browser. @hide -->
        <attr name="textColorSearchUrl" format="reference|color" />

        <!-- Color of highlighted text, when used in a light theme. -->
        <attr name="textColorHighlightInverse" format="reference|color" />
        <!-- Color of link text (URLs), when used in a light theme. -->
        <attr name="textColorLinkInverse" format="reference|color" />

        <!-- Color of list item text in alert dialogs. -->
        <attr name="textColorAlertDialogListItem" format="reference|color" />

        <!-- Search widget more corpus result item background. -->
        <attr name="searchWidgetCorpusItemBackground" format="reference|color" />

        <!-- Text color, typeface, size, and style for "large" text. Defaults to primary text color. -->
        <attr name="textAppearanceLarge" format="reference" />
        <!-- Text color, typeface, size, and style for "medium" text. Defaults to primary text color. -->
        <attr name="textAppearanceMedium" format="reference" />
        <!-- Text color, typeface, size, and style for "small" text. Defaults to secondary text color. -->
        <attr name="textAppearanceSmall" format="reference" />

        <!-- Text color, typeface, size, and style for "large" inverse text. Defaults to primary inverse text color. -->
        <attr name="textAppearanceLargeInverse" format="reference" />
        <!-- Text color, typeface, size, and style for "medium" inverse text. Defaults to primary inverse text color. -->
        <attr name="textAppearanceMediumInverse" format="reference" />
        <!-- Text color, typeface, size, and style for "small" inverse text. Defaults to secondary inverse text color. -->
        <attr name="textAppearanceSmallInverse" format="reference" />

        <!-- Text color, typeface, size, and style for system search result title. Defaults to primary inverse text color. -->
        <attr name="textAppearanceSearchResultTitle" format="reference" />
        <!-- Text color, typeface, size, and style for system search result subtitle. Defaults to primary inverse text color. -->
        <attr name="textAppearanceSearchResultSubtitle" format="reference" />

        <!-- Text color, typeface, size, and style for the text inside of a button. -->
        <attr name="textAppearanceButton" format="reference" />

        <!-- Text color, typeface, size, and style for the text inside of a popup menu. -->
        <attr name="textAppearanceLargePopupMenu" format="reference" />

        <!-- Text color, typeface, size, and style for small text inside of a popup menu. -->
        <attr name="textAppearanceSmallPopupMenu" format="reference" />

        <!-- Text color, typeface, size, and style for header text inside of a popup menu. -->
        <attr name="textAppearancePopupMenuHeader" format="reference" />

        <!-- The underline color and thickness for easy correct suggestion -->
        <attr name="textAppearanceEasyCorrectSuggestion" format="reference" />

        <!-- The underline color and thickness for misspelled suggestion -->
        <attr name="textAppearanceMisspelledSuggestion" format="reference" />

        <!-- The underline color and thickness for auto correction suggestion -->
        <attr name="textAppearanceAutoCorrectionSuggestion" format="reference" />

        <!--  The underline color -->
        <attr name="textUnderlineColor" format="reference|color" />
        <!--  The underline thickness -->
        <attr name="textUnderlineThickness" format="reference|dimension" />

        <!-- EditText text foreground color. -->
        <attr name="editTextColor" format="reference|color" />
        <!-- EditText background drawable. -->
        <attr name="editTextBackground" format="reference" />

        <!-- Popup text displayed in TextView when setError is used. -->
        <attr name="errorMessageBackground" format="reference" />
        <!-- Background used instead of errorMessageBackground when the popup has to be above. -->
        <attr name="errorMessageAboveBackground" format="reference" />

        <!-- A styled string, specifying the style to be used for showing
             inline candidate text when composing with an input method.  The
             text itself will be ignored, but the style spans will be applied
             to the candidate text as it is edited. -->
        <attr name="candidatesTextStyleSpans" format="reference|string" />

        <!-- Drawable to use for check marks. -->
        <attr name="textCheckMark" format="reference" />
        <attr name="textCheckMarkInverse" format="reference" />

        <!-- Drawable to use for multiple choice indicators. -->
        <attr name="listChoiceIndicatorMultiple" format="reference" />

        <!-- Drawable to use for single choice indicators. -->
        <attr name="listChoiceIndicatorSingle" format="reference" />

        <!-- Drawable used as a background for selected list items. -->
        <attr name="listChoiceBackgroundIndicator" format="reference" />

        <!-- Drawable used as a background for activated items. -->
        <attr name="activatedBackgroundIndicator" format="reference" />

        <!-- ============= -->
        <!-- Button styles -->
        <!-- ============= -->
        <eat-comment />

        <!-- Normal Button style. -->
        <attr name="buttonStyle" format="reference" />

        <!-- Small Button style. -->
        <attr name="buttonStyleSmall" format="reference" />

        <!-- Button style to inset into an EditText. -->
        <attr name="buttonStyleInset" format="reference" />

        <!-- ToggleButton style. -->
        <attr name="buttonStyleToggle" format="reference" />

        <!-- ============== -->
        <!-- Gallery styles -->
        <!-- ============== -->
        <eat-comment />

        <!-- The preferred background for gallery items. This should be set
             as the background of any Views you provide from the Adapter. -->
        <attr name="galleryItemBackground" format="reference" />

        <!-- =========== -->
        <!-- List styles -->
        <!-- =========== -->
        <eat-comment />

        <!-- The preferred list item height. -->
        <attr name="listPreferredItemHeight" format="dimension" />
        <!-- A smaller, sleeker list item height. -->
        <attr name="listPreferredItemHeightSmall" format="dimension" />
        <!-- A larger, more robust list item height. -->
        <attr name="listPreferredItemHeightLarge" format="dimension" />
        <!-- The list item height for search results. @hide -->
        <attr name="searchResultListItemHeight" format="dimension" />

        <!-- The preferred padding along the left edge of list items. -->
        <attr name="listPreferredItemPaddingLeft" format="dimension" />
        <!-- The preferred padding along the right edge of list items. -->
        <attr name="listPreferredItemPaddingRight" format="dimension" />

        <!-- The preferred TextAppearance for the primary text of list items. -->
        <attr name="textAppearanceListItem" format="reference" />
        <!-- The preferred TextAppearance for the secondary text of list items. -->
        <attr name="textAppearanceListItemSecondary" format="reference" />
        <!-- The preferred TextAppearance for the primary text of small list items. -->
        <attr name="textAppearanceListItemSmall" format="reference" />

        <!-- The drawable for the list divider. -->
        <attr name="listDivider" format="reference" />
        <!-- The list divider used in alert dialogs. -->
        <attr name="listDividerAlertDialog" format="reference" />
        <!-- TextView style for list separators. -->
        <attr name="listSeparatorTextViewStyle" format="reference" />
        <!-- The preferred left padding for an expandable list item (for child-specific layouts,
             use expandableListPreferredChildPaddingLeft). This takes into account
             the indicator that will be shown to next to the item. -->
        <attr name="expandableListPreferredItemPaddingLeft" format="dimension" />
        <!-- The preferred left padding for an expandable list item that is a child.
             If this is not provided, it defaults to the expandableListPreferredItemPaddingLeft. -->
        <attr name="expandableListPreferredChildPaddingLeft" format="dimension" />
        <!-- The preferred left bound for an expandable list item's indicator. For a child-specific
             indicator, use expandableListPreferredChildIndicatorLeft. -->
        <attr name="expandableListPreferredItemIndicatorLeft" format="dimension" />
        <!-- The preferred right bound for an expandable list item's indicator. For a child-specific
             indicator, use expandableListPreferredChildIndicatorRight. -->
        <attr name="expandableListPreferredItemIndicatorRight" format="dimension" />
        <!-- The preferred left bound for an expandable list child's indicator. -->
        <attr name="expandableListPreferredChildIndicatorLeft" format="dimension" />
        <!-- The preferred right bound for an expandable list child's indicator. -->
        <attr name="expandableListPreferredChildIndicatorRight" format="dimension" />

        <!-- The preferred item height for dropdown lists. -->
        <attr name="dropdownListPreferredItemHeight" format="dimension" />

        <!-- The preferred padding along the start edge of list items. -->
        <attr name="listPreferredItemPaddingStart" format="dimension" />
        <!-- The preferred padding along the end edge of list items. -->
        <attr name="listPreferredItemPaddingEnd" format="dimension" />

        <!-- ============= -->
        <!-- Window styles -->
        <!-- ============= -->
        <eat-comment />

        <!-- Drawable to use as the overall window background.  As of
             {@link android.os.Build.VERSION_CODES#HONEYCOMB}, this may
             be a selector that uses state_accelerated to pick a non-solid
             color when running on devices that can draw such a bitmap
             with complex compositing on top at 60fps.

             <p>There are a few special considerations to use when setting this
             drawable:
             <ul>
             <li> This information will be used to infer the pixel format
                  for your window's surface.  If the drawable has any
                  non-opaque pixels, your window will be translucent
                  (32 bpp).
             <li> If you want to draw the entire background
                  yourself, you should set this drawable to some solid
                  color that closely matches that background (so the
                  system's preview of your window will match), and
                  then in code manually set your window's background to
                  null so it will not be drawn.
             </ul> -->
        <attr name="windowBackground" format="reference" />
        <!-- Drawable to draw selectively within the inset areas when the windowBackground
             has been set to null. This protects against seeing visual garbage in the
             surface when the app has not drawn any content into this area. One example is
             when the user is resizing a window of an activity that has
             {@link android.R.attr#resizeableActivity} set for multi-window mode. -->
        <attr name="windowBackgroundFallback" format="reference" />
        <!-- Drawable to use as a frame around the window. -->
        <attr name="windowFrame" format="reference" />
        <!-- Flag indicating whether there should be no title on this window. -->
        <attr name="windowNoTitle" format="boolean" />
        <!-- Flag indicating whether this window should fill the entire screen.  Corresponds
             to {@link android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN}. -->
        <attr name="windowFullscreen" format="boolean" />
        <!-- Flag indicating whether this window should extend into overscan region.  Corresponds
             to {@link android.view.WindowManager.LayoutParams#FLAG_LAYOUT_IN_OVERSCAN}. -->
        <attr name="windowOverscan" format="boolean" />
        <!-- Flag indicating whether this is a floating window. -->
        <attr name="windowIsFloating" format="boolean" />
        <!-- Flag indicating whether this is a translucent window. If this attribute is unset (but
             not if set to false), the window might still be considered translucent, if
             windowSwipeToDismiss is set to true. -->
        <attr name="windowIsTranslucent" format="boolean" />
        <!-- Flag indicating that this window's background should be the
             user's current wallpaper.  Corresponds
             to {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WALLPAPER}. -->
        <attr name="windowShowWallpaper" format="boolean" />
        <!-- This Drawable is overlaid over the foreground of the Window's content area, usually
             to place a shadow below the title.  -->
        <attr name="windowContentOverlay" format="reference" />
        <!-- The style resource to use for a window's title bar height. -->
        <attr name="windowTitleSize" format="dimension" />
        <!-- The style resource to use for a window's title text. -->
        <attr name="windowTitleStyle" format="reference" />
        <!-- The style resource to use for a window's title area. -->
        <attr name="windowTitleBackgroundStyle" format="reference" />

        <!-- Reference to a style resource holding
             the set of window animations to use, which can be
             any of the attributes defined by
             {@link android.R.styleable#WindowAnimation}. -->
        <attr name="windowAnimationStyle" format="reference" />

        <!-- Flag indicating whether this window should have an Action Bar
             in place of the usual title bar. -->
        <attr name="windowActionBar" format="boolean" />

        <!-- Flag indicating whether this window's Action Bar should overlay
             application content. Does nothing if the window would not
             have an Action Bar. -->
        <attr name="windowActionBarOverlay" format="boolean" />

        <!-- Flag indicating whether action modes should overlay window content
             when there is not reserved space for their UI (such as an Action Bar). -->
        <attr name="windowActionModeOverlay" format="boolean" />

        <!-- Defines the default soft input state that this window would
             like when it is displayed.  Corresponds
             to {@link android.view.WindowManager.LayoutParams#softInputMode}. -->
        <attr name="windowSoftInputMode">
            <!-- Not specified, use what the system thinks is best.  This
                 is the default. -->
            <flag name="stateUnspecified" value="0" />
            <!-- Leave the soft input window as-is, in whatever state it
                 last was. -->
            <flag name="stateUnchanged" value="1" />
            <!-- Make the soft input area hidden when normally appropriate
                 (when the user is navigating forward to your window). -->
            <flag name="stateHidden" value="2" />
            <!-- Always make the soft input area hidden when this window
                 has input focus. -->
            <flag name="stateAlwaysHidden" value="3" />
            <!-- Make the soft input area visible when normally appropriate
                 (when the user is navigating forward to your window). -->
            <flag name="stateVisible" value="4" />
            <!-- Always make the soft input area visible when this window
                 has input focus. -->
            <flag name="stateAlwaysVisible" value="5" />

            <!-- The window resize/pan adjustment has not been specified,
                 the system will automatically select between resize and pan
                 modes, depending
                 on whether the content of the window has any layout views
                 that can scroll their contents.  If there is such a view,
                 then the window will be resized, with the assumption being
                 that the resizeable area can be reduced to make room for
                 the input UI. -->
            <flag name="adjustUnspecified" value="0x00" />
            <!-- Always resize the window: the content area of the window is
                 reduced to make room for the soft input area. -->
            <flag name="adjustResize" value="0x10" />
            <!-- Don't resize the window to make room for the soft input area;
                 instead pan the contents of the window as focus moves inside
                 of it so that the user can see what they are typing.  This is
                 generally less desireable than panning because the user may
                 need to close the input area to get at and interact with
                 parts of the window. -->
            <flag name="adjustPan" value="0x20" />
            <!-- Don't resize <em>or</em> pan the window to make room for the
                 soft input area; the window is never adjusted for it. -->
            <flag name="adjustNothing" value="0x30" />
        </attr>

        <!-- Flag allowing you to disable the splash screen for a window. The default value is
             false; if set to true, the system can never use the window's theme to show a splash
             screen before your actual instance is shown to the user. -->
        <attr name="windowDisablePreview" format="boolean" />

        <!-- Flag indicating that this window should not be displayed at all.
             The default value is false; if set to true, and this window is
             the main window of an Activity, then it will never actually
             be added to the window manager.  This means that your activity
             must immediately quit without waiting for user interaction,
             because there will be no such interaction coming. -->
        <attr name="windowNoDisplay" format="boolean" />

        <!-- Flag indicating that this window should allow touches to be split
             across other windows that also support split touch.
             The default value is true for applications with a targetSdkVersion
             of Honeycomb or newer; false otherwise.
             When this flag is false, the first pointer that goes down determines
             the window to which all subsequent touches go until all pointers go up.
             When this flag is true, each pointer (not necessarily the first) that
             goes down determines the window to which all subsequent touches of that
             pointer will go until that pointers go up thereby enabling touches
             with multiple pointers to be split across multiple windows. -->
        <attr name="windowEnableSplitTouch" format="boolean" />

        <!-- Control whether a container should automatically close itself if
             the user touches outside of it.  This only applies to activities
             and dialogs.

             <p>Note: this attribute will only be respected for applications
             that are targeting {@link android.os.Build.VERSION_CODES#HONEYCOMB}
             or later. -->
        <attr name="windowCloseOnTouchOutside" format="boolean" />

        <!-- Flag indicating whether this window requests a translucent status bar.  Corresponds
             to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_STATUS}. -->
        <attr name="windowTranslucentStatus" format="boolean" />

        <!-- Flag indicating whether this window requests a translucent navigation bar.  Corresponds
             to {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION}. -->
        <attr name="windowTranslucentNavigation" format="boolean" />

        <!-- Flag to indicate that a window can be swiped away to be dismissed.
             Corresponds to {@link android.view.Window#FEATURE_SWIPE_TO_DISMISS}. It will also
             dynamically change translucency of the window, if the windowIsTranslucent is not set.
             If windowIsTranslucent is set (to either true or false) it will obey that setting. -->
        <attr name="windowSwipeToDismiss" format="boolean" />

        <!-- Flag indicating whether this window requests that content changes be performed
             as scene changes with transitions. Corresponds to
             {@link android.view.Window#FEATURE_CONTENT_TRANSITIONS}. -->
        <attr name="windowContentTransitions" format="boolean" />

        <!-- Reference to a TransitionManager XML resource defining the desired
             transitions between different window content. -->
        <attr name="windowContentTransitionManager" format="reference" />

        <!-- Flag indicating whether this window allows Activity Transitions.
             Corresponds to {@link android.view.Window#FEATURE_ACTIVITY_TRANSITIONS}. -->
        <attr name="windowActivityTransitions" format="boolean" />

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move Views into the initial Window's content Scene. Corresponds to
             {@link android.view.Window#setEnterTransition(android.transition.Transition)}. -->
        <attr name="windowEnterTransition" format="reference"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move Views out of the scene when the Window is
             preparing to close. Corresponds to
             {@link android.view.Window#setReturnTransition(android.transition.Transition)}. -->
        <attr name="windowReturnTransition" format="reference"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move Views out of the Window's content Scene when launching a new Activity.
             Corresponds to
             {@link android.view.Window#setExitTransition(android.transition.Transition)}. -->
        <attr name="windowExitTransition" format="reference"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move Views in to the scene when returning from a previously-started Activity.
             Corresponds to
             {@link android.view.Window#setReenterTransition(android.transition.Transition)}. -->
        <attr name="windowReenterTransition" format="reference"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move shared elements transferred into the Window's initial content Scene.
             Corresponds to {@link android.view.Window#setSharedElementEnterTransition(
             android.transition.Transition)}. -->
        <attr name="windowSharedElementEnterTransition" format="reference"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move shared elements transferred back to a calling Activity.
             Corresponds to {@link android.view.Window#setSharedElementReturnTransition(
             android.transition.Transition)}. -->
        <attr name="windowSharedElementReturnTransition" format="reference"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used when starting a new Activity to move shared elements prior to transferring
             to the called Activity.
             Corresponds to {@link android.view.Window#setSharedElementExitTransition(
             android.transition.Transition)}. -->
        <attr name="windowSharedElementExitTransition" format="reference"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used for shared elements transferred back to a calling Activity.
             Corresponds to {@link android.view.Window#setSharedElementReenterTransition(
             android.transition.Transition)}. -->
        <attr name="windowSharedElementReenterTransition" format="reference"/>

        <!-- Flag indicating whether this Window's transition should overlap with
             the exiting transition of the calling Activity. Corresponds to
             {@link android.view.Window#setAllowEnterTransitionOverlap(boolean)}.
             The default value is true. -->
        <attr name="windowAllowEnterTransitionOverlap" format="boolean"/>

        <!-- Flag indicating whether this Window's transition should overlap with
             the exiting transition of the called Activity when the called Activity
             finishes. Corresponds to
             {@link android.view.Window#setAllowReturnTransitionOverlap(boolean)}.
             The default value is true. -->
        <attr name="windowAllowReturnTransitionOverlap" format="boolean"/>

        <!-- Indicates whether or not shared elements should use an overlay
             during transitions. The default value is true. -->
        <attr name="windowSharedElementsUseOverlay" format="boolean"/>

        <!-- Internal layout used internally for window decor -->
        <attr name="windowActionBarFullscreenDecorLayout" format="reference" />

        <!-- The duration, in milliseconds, of the window background fade duration
             when transitioning into or away from an Activity when called with an
             Activity Transition. Corresponds to
             {@link android.view.Window#setTransitionBackgroundFadeDuration(long)}. -->
        <attr name="windowTransitionBackgroundFadeDuration" format="integer"/>

        <!-- ============ -->
        <!-- Floating toolbar styles -->
        <!-- ============ -->
       <eat-comment />
       <attr name="floatingToolbarCloseDrawable" format="reference" />
       <attr name="floatingToolbarForegroundColor" format="reference|color" />
       <attr name="floatingToolbarItemBackgroundBorderlessDrawable" format="reference" />
       <attr name="floatingToolbarItemBackgroundDrawable" format="reference" />
       <attr name="floatingToolbarOpenDrawable" format="reference" />
       <attr name="floatingToolbarPopupBackgroundDrawable" format="reference" />
       <attr name="floatingToolbarDividerColor" format="reference" />

        <!-- ============ -->
        <!-- Alert Dialog styles -->
        <!-- ============ -->
        <eat-comment />
        <attr name="alertDialogStyle" format="reference" />
        <attr name="alertDialogButtonGroupStyle" format="reference" />
        <attr name="alertDialogCenterButtons" format="boolean" />

        <!-- ============== -->
        <!-- Image elements -->
        <!-- ============== -->
        <eat-comment />

        <!-- Background that can be used behind parts of a UI that provide
             details on data the user is selecting.  For example, this is
             the background element of PreferenceActivity's embedded
             preference fragment. -->
        <attr name="detailsElementBackground" format="reference" />

        <!-- Icon that should be used to indicate that an app is waiting for a fingerprint scan.
             This should be used whenever an app is requesting the user to place a finger on the
             fingerprint sensor. It can be combined with other drawables such as colored circles, so
             the appearance matches the branding of the app requesting the fingerprint scan.-->
        <attr name="fingerprintAuthDrawable" format="reference" />

        <!-- ============ -->
        <!-- Panel styles -->
        <!-- ============ -->
        <eat-comment />

        <!-- The background of a panel when it is inset from the left and right edges of the screen. -->
        <attr name="panelBackground" format="reference|color" />
        <!-- The background of a panel when it extends to the left and right edges of the screen. -->
        <attr name="panelFullBackground" format="reference|color" />
        <!-- Default color of foreground panel imagery. -->
        <attr name="panelColorForeground" format="reference|color" />
        <!-- Color that matches (as closely as possible) the panel background. -->
        <attr name="panelColorBackground" format="reference|color" />
        <!-- Default appearance of panel text. -->
        <attr name="panelTextAppearance" format="reference" />

        <attr name="panelMenuIsCompact" format="boolean" />
        <attr name="panelMenuListWidth" format="dimension" />
        <attr name="panelMenuListTheme" format="reference" />

        <!-- =================== -->
        <!-- Other widget styles -->
        <!-- =================== -->
        <eat-comment />

        <!-- Default AbsListView style. -->
        <attr name="absListViewStyle" format="reference" />
        <!-- Default AutoCompleteTextView style. -->
        <attr name="autoCompleteTextViewStyle" format="reference" />
        <!-- Default Checkbox style. -->
        <attr name="checkboxStyle" format="reference" />
        <!-- Default CheckedTextView style. -->
        <attr name="checkedTextViewStyle" format="reference" />
        <!-- Default ListView style for drop downs. -->
        <attr name="dropDownListViewStyle" format="reference" />
        <!-- Default EditText style. -->
        <attr name="editTextStyle" format="reference" />
        <!-- Default ExpandableListView style. -->
        <attr name="expandableListViewStyle" format="reference" />
        <!-- ExpandableListView with white background. -->
        <attr name="expandableListViewWhiteStyle" format="reference" />
        <!-- Default Gallery style. -->
        <attr name="galleryStyle" format="reference" />
        <!-- Default GestureOverlayView style. -->
        <attr name="gestureOverlayViewStyle" format="reference" />
        <!-- Default GridView style. -->
        <attr name="gridViewStyle" format="reference" />
        <!-- The style resource to use for an ImageButton. -->
        <attr name="imageButtonStyle" format="reference" />
        <!-- The style resource to use for an ImageButton that is an image well. -->
        <attr name="imageWellStyle" format="reference" />
        <!-- Default menu-style ListView style. -->
        <attr name="listMenuViewStyle" format="reference" />
        <!-- Default ListView style. -->
        <attr name="listViewStyle" format="reference" />
        <!-- ListView with white background. -->
        <attr name="listViewWhiteStyle" format="reference" />
        <!-- Default PopupWindow style. -->
        <attr name="popupWindowStyle" format="reference" />
        <!-- Default ProgressBar style. This is a medium circular progress bar. -->
        <attr name="progressBarStyle" format="reference" />
        <!-- Horizontal ProgressBar style. This is a horizontal progress bar. -->
        <attr name="progressBarStyleHorizontal" format="reference" />
        <!-- Small ProgressBar style. This is a small circular progress bar. -->
        <attr name="progressBarStyleSmall" format="reference" />
        <!-- Small ProgressBar in title style. This is a small circular progress bar that will be placed in title bars. -->
        <attr name="progressBarStyleSmallTitle" format="reference" />
        <!-- Large ProgressBar style. This is a large circular progress bar. -->
        <attr name="progressBarStyleLarge" format="reference" />
        <!-- Inverse ProgressBar style. This is a medium circular progress bar. -->
        <attr name="progressBarStyleInverse" format="reference" />
        <!-- Small inverse ProgressBar style. This is a small circular progress bar. -->
        <attr name="progressBarStyleSmallInverse" format="reference" />
        <!-- Large inverse ProgressBar style. This is a large circular progress bar. -->
        <attr name="progressBarStyleLargeInverse" format="reference" />
        <!-- Default SeekBar style. -->
        <attr name="seekBarStyle" format="reference" />
        <!-- Default RatingBar style. -->
        <attr name="ratingBarStyle" format="reference" />
        <!-- Indicator RatingBar style. -->
        <attr name="ratingBarStyleIndicator" format="reference" />
        <!-- Small indicator RatingBar style. -->
        <attr name="ratingBarStyleSmall" format="reference" />
        <!-- Default RadioButton style. -->
        <attr name="radioButtonStyle" format="reference" />
        <!-- Default ScrollView style. -->
        <attr name="scrollViewStyle" format="reference" />
        <!-- Default HorizontalScrollView style. -->
        <attr name="horizontalScrollViewStyle" format="reference" />
        <!-- Default Spinner style. -->
        <attr name="spinnerStyle" format="reference" />
        <!-- Default dropdown Spinner style. -->
        <attr name="dropDownSpinnerStyle" format="reference" />
        <!-- Default ActionBar dropdown style. -->
        <attr name="actionDropDownStyle" format="reference" />
        <!-- Default action button style. -->
        <attr name="actionButtonStyle" format="reference" />
        <!-- Default Star style. -->
        <attr name="starStyle" format="reference" />
        <!-- Default TabWidget style. -->
        <attr name="tabWidgetStyle" format="reference" />
        <!-- Default TextView style. -->
        <attr name="textViewStyle" format="reference" />
        <!-- Default WebTextView style. -->
        <attr name="webTextViewStyle" format="reference" />
        <!-- Default WebView style. -->
        <attr name="webViewStyle" format="reference" />
        <!-- Default style for drop down items. -->
        <attr name="dropDownItemStyle" format="reference" />
         <!-- Default style for spinner drop down items. -->
        <attr name="spinnerDropDownItemStyle" format="reference" />
        <!-- Default style for drop down hints. -->
        <attr name="dropDownHintAppearance" format="reference" />
        <!-- Default spinner item style. -->
        <attr name="spinnerItemStyle" format="reference" />
        <!-- Default MapView style. -->
        <attr name="mapViewStyle" format="reference" />
        <!-- Drawable used as an overlay on top of quickcontact photos. -->
        <attr name="quickContactBadgeOverlay" format="reference" />
        <!-- Default quickcontact badge style with small quickcontact window. -->
        <attr name="quickContactBadgeStyleWindowSmall" format="reference" />
        <!-- Default quickcontact badge style with medium quickcontact window. -->
        <attr name="quickContactBadgeStyleWindowMedium" format="reference" />
        <!-- Default quickcontact badge style with large quickcontact window. -->
        <attr name="quickContactBadgeStyleWindowLarge" format="reference" />
        <!-- Default quickcontact badge style with small quickcontact window. -->
        <attr name="quickContactBadgeStyleSmallWindowSmall" format="reference" />
        <!-- Default quickcontact badge style with medium quickcontact window. -->
        <attr name="quickContactBadgeStyleSmallWindowMedium" format="reference" />
        <!-- Default quickcontact badge style with large quickcontact window. -->
        <attr name="quickContactBadgeStyleSmallWindowLarge" format="reference" />
        <!-- Reference to a style that will be used for the window containing a text
             selection anchor. -->
        <attr name="textSelectHandleWindowStyle" format="reference" />
        <!-- Reference to a style that will be used for the window containing a list of possible
             text suggestions in an EditText. -->
        <attr name="textSuggestionsWindowStyle" format="reference" />
        <!-- Default ListPopupWindow style. -->
        <attr name="listPopupWindowStyle" format="reference" />
        <!-- Default PopupMenu style. -->
        <attr name="popupMenuStyle" format="reference" />
        <!-- Default context menu PopupMenu style. -->
        <attr name="contextPopupMenuStyle" format="reference" />
        <!-- Default StackView style. -->
        <attr name="stackViewStyle" format="reference" />

        <!-- Default style for the FragmentBreadCrumbs widget. This widget is deprecated
             starting in API level 21 ({@link android.os.Build.VERSION_CODES#.L}). -->
        <attr name="fragmentBreadCrumbsStyle" format="reference" />

        <!-- NumberPicker style. -->
        <attr name="numberPickerStyle" format="reference" />

        <!-- The CalendarView style. -->
        <attr name="calendarViewStyle" format="reference" />

        <!-- The TimePicker style. -->
        <attr name="timePickerStyle" format="reference" />

        <!-- The TimePicker dialog theme. -->
        <attr name="timePickerDialogTheme" format="reference" />

        <!-- The DatePicker style. -->
        <attr name="datePickerStyle" format="reference" />

        <!-- The DatePicker dialog theme. -->
        <attr name="datePickerDialogTheme" format="reference" />

        <!-- Default ActivityChooserView style. -->
        <attr name="activityChooserViewStyle" format="reference" />

        <!-- Default Toolbar style. -->
        <attr name="toolbarStyle" format="reference" />

        <!-- Fast scroller styles -->
        <eat-comment />

        <!-- Drawable to use as the fast scroll thumb. -->
        <attr name="fastScrollThumbDrawable" format="reference" />
        <!-- Drawable to use as the fast scroll index preview window background
             when shown on the right. -->
        <attr name="fastScrollPreviewBackgroundRight" format="reference" />
        <!-- Drawable to use as the fast scroll index preview window background
             when shown on the left. -->
        <attr name="fastScrollPreviewBackgroundLeft" format="reference" />
        <!-- Drawable to use as the track for the fast scroll thumb.
             This may be null. -->
        <attr name="fastScrollTrackDrawable" format="reference" />
        <!-- Position of the fast scroll index overlay window. -->
        <attr name="fastScrollOverlayPosition">
            <enum name="floating" value="0" />
            <enum name="atThumb" value="1" />
            <enum name="aboveThumb" value="2" />
        </attr>
        <!-- Text color for the fast scroll index overlay. Make sure it
             plays nicely with fastScrollPreviewBackground[Left|Right]. -->
        <attr name="fastScrollTextColor" format="color" />

        <!-- =================== -->
        <!-- Action bar styles   -->
        <!-- =================== -->
        <eat-comment />
        <!-- Default style for tabs within an action bar. -->
        <attr name="actionBarTabStyle" format="reference" />
        <!-- Reference to a style for the Action Bar Tab Bar. -->
        <attr name="actionBarTabBarStyle" format="reference" />
        <!-- Reference to a style for the Action Bar Tab text. -->
        <attr name="actionBarTabTextStyle" format="reference" />
        <!-- Reference to a style for Action Bar overflow buttons. -->
        <attr name="actionOverflowButtonStyle" format="reference" />
        <!-- Reference to a style for the Action Bar menu. -->
        <attr name="actionOverflowMenuStyle" format="reference" />
        <!-- Reference to a theme that should be used to inflate popups
             shown by widgets in the action bar. -->
        <attr name="actionBarPopupTheme" format="reference" />
        <!-- Reference to a style for the Action Bar. -->
        <attr name="actionBarStyle" format="reference" />
        <!-- Reference to a style for the split Action Bar. This style
             controls the split component that holds the menu/action
             buttons. actionBarStyle is still used for the primary
             bar. -->
        <attr name="actionBarSplitStyle" format="reference" />
        <!-- Reference to a theme that should be used to inflate the
             action bar. This will be inherited by any widget inflated
             into the action bar. -->
        <attr name="actionBarTheme" format="reference" />
        <!-- Reference to a theme that should be used to inflate widgets
             and layouts destined for the action bar. Most of the time
             this will be a reference to the current theme, but when
             the action bar has a significantly different contrast
             profile than the rest of the activity the difference
             can become important. If this is set to @null the current
             theme will be used.-->
        <attr name="actionBarWidgetTheme" format="reference" />
        <!-- Size of the Action Bar, including the contextual
             bar used to present Action Modes. -->
        <attr name="actionBarSize" format="dimension" >
            <enum name="wrap_content" value="0" />
        </attr>
        <!-- Custom divider drawable to use for elements in the action bar. -->
        <attr name="actionBarDivider" format="reference" />
        <!-- Custom item state list drawable background for action bar items. -->
        <attr name="actionBarItemBackground" format="reference" />
        <!-- TextAppearance style that will be applied to text that
             appears within action menu items. -->
        <attr name="actionMenuTextAppearance" format="reference" />
        <!-- Color for text that appears within action menu items. -->
        <attr name="actionMenuTextColor" format="color|reference" />

        <!-- =================== -->
        <!-- Action mode styles  -->
        <!-- =================== -->
        <eat-comment />
        <!-- Reference to a style for the Action Mode. -->
        <attr name="actionModeStyle" format="reference" />
        <!-- Reference to a style for the Action Mode close button. -->
        <attr name="actionModeCloseButtonStyle" format="reference" />
        <!-- Background drawable to use for action mode UI. -->
        <attr name="actionModeBackground" format="reference" />
        <!-- Background drawable to use for action mode UI in the lower split bar. -->
        <attr name="actionModeSplitBackground" format="reference" />
        <!-- Drawable to use for the close action mode button. -->
        <attr name="actionModeCloseDrawable" format="reference" />

        <!-- Drawable to use for the Cut action button in Contextual Action Bar. -->
        <attr name="actionModeCutDrawable" format="reference" />
        <!-- Drawable to use for the Copy action button in Contextual Action Bar. -->
        <attr name="actionModeCopyDrawable" format="reference" />
        <!-- Drawable to use for the Paste action button in Contextual Action Bar. -->
        <attr name="actionModePasteDrawable" format="reference" />
        <!-- Drawable to use for the Select all action button in Contextual Action Bar. -->
        <attr name="actionModeSelectAllDrawable" format="reference" />
        <!-- Drawable to use for the Share action button in WebView selection action modes. -->
        <attr name="actionModeShareDrawable" format="reference" />
        <!-- Drawable to use for the Find action button in WebView selection action modes. -->
        <attr name="actionModeFindDrawable" format="reference" />
        <!-- Drawable to use for the Web Search action button in WebView selection action modes. -->
        <attr name="actionModeWebSearchDrawable" format="reference" />

        <!-- PopupWindow style to use for action modes when showing as a window overlay. -->
        <attr name="actionModePopupWindowStyle" format="reference" />

        <!-- =================== -->
        <!-- Preference styles   -->
        <!-- =================== -->
        <eat-comment />

        <!-- Default style for PreferenceScreen. -->
        <attr name="preferenceScreenStyle" format="reference" />
        <!-- Default style for the PreferenceActivity. -->
        <attr name="preferenceActivityStyle" format="reference" />
        <!-- Default style for Headers pane in PreferenceActivity. -->
        <attr name="preferenceFragmentStyle" format="reference" />
        <!-- Default style for PreferenceCategory. -->
        <attr name="preferenceCategoryStyle" format="reference" />
        <!-- Default style for Preference. -->
        <attr name="preferenceStyle" format="reference" />
        <!-- Default style for informational Preference. -->
        <attr name="preferenceInformationStyle" format="reference" />
        <!-- Default style for CheckBoxPreference. -->
        <attr name="checkBoxPreferenceStyle" format="reference" />
        <!-- Default style for YesNoPreference. -->
        <attr name="yesNoPreferenceStyle" format="reference" />
        <!-- Default style for DialogPreference. -->
        <attr name="dialogPreferenceStyle" format="reference" />
        <!-- Default style for EditTextPreference. -->
        <attr name="editTextPreferenceStyle" format="reference" />
        <!-- @hide Default style for SeekBarDialogPreference. -->
        <attr name="seekBarDialogPreferenceStyle" format="reference" />
        <!-- Default style for RingtonePreference. -->
        <attr name="ringtonePreferenceStyle" format="reference" />
        <!-- The preference layout that has the child/tabbed effect. -->
        <attr name="preferenceLayoutChild" format="reference" />
        <!-- Preference panel style -->
        <attr name="preferencePanelStyle" format="reference" />
        <!-- Preference headers panel style -->
        <attr name="preferenceHeaderPanelStyle" format="reference" />
        <!-- Preference list style -->
        <attr name="preferenceListStyle" format="reference" />
        <!-- Preference fragment list style -->
        <attr name="preferenceFragmentListStyle" format="reference" />
        <!-- Preference fragment padding side -->
        <attr name="preferenceFragmentPaddingSide" format="dimension" />
        <!-- Default style for switch preferences. -->
        <attr name="switchPreferenceStyle" format="reference" />
        <!-- Default style for seekbar preferences. -->
        <attr name="seekBarPreferenceStyle" format="reference" />

        <!-- ============================ -->
        <!-- Text selection handle styles -->
        <!-- ============================ -->
        <eat-comment />

        <!-- Reference to a drawable that will be used to display a text selection
             anchor on the left side of a selection region. -->
        <attr name="textSelectHandleLeft" format="reference" />
        <!-- Reference to a drawable that will be used to display a text selection
             anchor on the right side of a selection region. -->
        <attr name="textSelectHandleRight" format="reference" />
        <!-- Reference to a drawable that will be used to display a text selection
             anchor for positioning the cursor within text. -->
        <attr name="textSelectHandle" format="reference" />
        <!-- The layout of the view that is displayed on top of the cursor to paste inside a
             TextEdit field. -->
        <attr name="textEditPasteWindowLayout" format="reference" />
        <!-- Variation of textEditPasteWindowLayout displayed when the clipboard is empty. -->
        <attr name="textEditNoPasteWindowLayout" format="reference" />
        <!-- Used instead of textEditPasteWindowLayout when the window is moved on the side of the
             insertion cursor because it would be clipped if it were positioned on top. -->
        <attr name="textEditSidePasteWindowLayout" format="reference" />
        <!-- Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty. -->
        <attr name="textEditSideNoPasteWindowLayout" format="reference" />

        <!-- Layout of the TextView item that will populate the suggestion popup window. -->
        <attr name="textEditSuggestionItemLayout" format="reference" />
        <!-- Layout of the container of the suggestion popup window. -->
        <attr name="textEditSuggestionContainerLayout" format="reference" />
        <!-- Text appearance of the focused words to be replaced by suggested word. -->
        <attr name="textEditSuggestionHighlightStyle" format="reference" />

        <!-- Theme to use for dialogs spawned from this theme. -->
        <attr name="dialogTheme" format="reference" />
        <!-- Window decor layout to use in dialog mode with icons. -->
        <attr name="dialogTitleIconsDecorLayout" format="reference" />
        <!-- Window decor layout to use in dialog mode with custom titles. -->
        <attr name="dialogCustomTitleDecorLayout" format="reference" />
        <!-- Window decor layout to use in dialog mode with title only. -->
        <attr name="dialogTitleDecorLayout" format="reference" />
        <!-- Preferred padding for dialog content. -->
        <attr name="dialogPreferredPadding" format="dimension" />

        <!-- Theme to use for alert dialogs spawned from this theme. -->
        <attr name="alertDialogTheme" format="reference" />
        <!-- Icon drawable to use for alerts. -->
        <attr name="alertDialogIcon" format="reference" />

        <!-- Theme to use for presentations spawned from this theme. -->
        <attr name="presentationTheme" format="reference" />

        <!-- Drawable to use for generic vertical dividers. -->
        <attr name="dividerVertical" format="reference" />

        <!-- Drawable to use for generic horizontal dividers. -->
        <attr name="dividerHorizontal" format="reference" />

        <!-- Style for button bars. -->
        <attr name="buttonBarStyle" format="reference" />

        <!-- Style for buttons within button bars. -->
        <attr name="buttonBarButtonStyle" format="reference" />

        <!-- Style for the "positive" buttons within button bars. -->
        <attr name="buttonBarPositiveButtonStyle" format="reference" />

        <!-- Style for the "negative" buttons within button bars. -->
        <attr name="buttonBarNegativeButtonStyle" format="reference" />

        <!-- Style for the "neutral" buttons within button bars. -->
        <attr name="buttonBarNeutralButtonStyle" format="reference" />

        <!-- Style for the search query widget. -->
        <attr name="searchViewStyle" format="reference" />

        <!-- Style for segmented buttons - a container that houses several buttons
             with the appearance of a singel button broken into segments. -->
        <attr name="segmentedButtonStyle" format="reference" />

        <!-- Background drawable for bordered standalone items that need focus/pressed states. -->
        <attr name="selectableItemBackground" format="reference" />

        <!-- Background drawable for borderless standalone items that need focus/pressed states. -->
        <attr name="selectableItemBackgroundBorderless" format="reference" />

        <!-- Style for buttons without an explicit border, often used in groups. -->
        <attr name="borderlessButtonStyle" format="reference" />

        <!-- Background to use for toasts. -->
        <attr name="toastFrameBackground" format="reference" />

        <!-- Background to use for tooltip popups. -->
        <attr name="tooltipFrameBackground" format="reference" />

        <!-- Foreground color to use for tooltip popups. -->
        <attr name="tooltipForegroundColor" format="reference|color" />

        <!-- Background color to use for tooltip popups. -->
        <attr name="tooltipBackgroundColor" format="reference|color" />

        <!-- Theme to use for Search Dialogs. -->
        <attr name="searchDialogTheme" format="reference" />

        <!-- Specifies a drawable to use for the 'home as up' indicator. -->
        <attr name="homeAsUpIndicator" format="reference" />

        <!-- Preference frame layout styles. -->
        <attr name="preferenceFrameLayoutStyle" format="reference" />

        <!-- Default style for the Switch widget. -->
        <attr name="switchStyle" format="reference" />

        <!-- Default style for the MediaRouteButton widget. -->
        <attr name="mediaRouteButtonStyle" format="reference" />

        <!-- ============== -->
        <!-- Pointer styles -->
        <!-- ============== -->
        <eat-comment />

        <!-- The drawable for accessibility focused views. -->
        <attr name="accessibilityFocusedDrawable" format="reference" />

        <!-- Drawable for WebView find-on-page dialogue's "next" button. @hide -->
        <attr name="findOnPageNextDrawable" format="reference" />

        <!-- Drawable for WebView find-on-page dialogue's "previous" button. @hide -->
        <attr name="findOnPagePreviousDrawable" format="reference" />

        <!-- ============= -->
        <!-- Color palette -->
        <!-- ============= -->
        <eat-comment />

        <!-- The primary branding color for the app. By default, this is the color applied to the
             action bar background. -->
        <attr name="colorPrimary" format="color" />

        <!-- Dark variant of the primary branding color. By default, this is the color applied to
             the status bar (via statusBarColor) and navigation bar (via navigationBarColor). -->
        <attr name="colorPrimaryDark" format="color" />

        <!-- The secondary branding color for the app. -->
        <attr name="colorSecondary" format="color" />

        <!-- Bright complement to the primary branding color. By default, this is the color applied
             to framework controls (via colorControlActivated). -->
        <attr name="colorAccent" format="color" />

        <!-- The color applied to framework controls in their normal state. -->
        <attr name="colorControlNormal" format="color" />

        <!-- The color applied to framework controls in their activated (ex. checked) state. -->
        <attr name="colorControlActivated" format="color" />

        <!-- The color applied to framework control highlights (ex. ripples, list selectors). -->
        <attr name="colorControlHighlight" format="color" />

        <!-- The color applied to framework buttons in their normal state. -->
        <attr name="colorButtonNormal" format="color" />

        <!-- The color applied to framework switch thumbs in their normal state. -->
        <attr name="colorSwitchThumbNormal" format="color" />

        <!-- The color applied to the edge effect on scrolling containers. -->
        <attr name="colorEdgeEffect" format="color" />

        <!-- =================== -->
        <!-- Lighting properties -->
        <!-- =================== -->
        <eat-comment />

        <!-- @hide The default Y position of the light used to project view shadows. -->
        <attr name="lightY" format="dimension" />

        <!-- @hide The default Z position of the light used to project view shadows. -->
        <attr name="lightZ" format="dimension" />

        <!-- @hide The default radius of the light used to project view shadows. -->
        <attr name="lightRadius" format="dimension" />

        <!-- Alpha value of the ambient shadow projected by elevated views, between 0 and 1. -->
        <attr name="ambientShadowAlpha" format="float" />

        <!-- Alpha value of the spot shadow projected by elevated views, between 0 and 1. -->
        <attr name="spotShadowAlpha" format="float" />
    </declare-styleable>

    <!-- **************************************************************** -->
    <!-- Other non-theme attributes. -->
    <!-- **************************************************************** -->
    <eat-comment />

    <!-- Size of text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp).
         Supported values include the following:<p/>
    <ul>
        <li><b>px</b> Pixels</li>
        <li><b>sp</b> Scaled pixels (scaled to relative pixel size on screen). See {@link android.util.DisplayMetrics} for more information.</li>
        <li><b>pt</b> Points</li>
        <li><b>dip</b> Device independent pixels. See {@link android.util.DisplayMetrics} for more information.</li>
    </ul>
        -->
    <attr name="textSize" format="dimension" />

    <!-- Default font family. -->
    <attr name="fontFamily" format="string" />

    <!-- Default text typeface. -->
    <attr name="typeface">
        <enum name="normal" value="0" />
        <enum name="sans" value="1" />
        <enum name="serif" value="2" />
        <enum name="monospace" value="3" />
    </attr>

    <!-- Default text typeface style. -->
    <attr name="textStyle">
        <flag name="normal" value="0" />
        <flag name="bold" value="1" />
        <flag name="italic" value="2" />
    </attr>

    <!-- Color of text (usually same as colorForeground). -->
    <attr name="textColor" format="reference|color" />

    <!-- Color of highlighted text. -->
    <attr name="textColorHighlight" format="reference|color" />

    <!-- Color of hint text (displayed when the field is empty). -->
    <attr name="textColorHint" format="reference|color" />

    <!-- Color of link text (URLs). -->
    <attr name="textColorLink" format="reference|color" />

    <!-- Reference to a drawable that will be drawn under the insertion cursor. -->
    <attr name="textCursorDrawable" format="reference" />

    <!-- Indicates that the content of a non-editable TextView can be selected.
     Default value is false. EditText content is always selectable. -->
    <attr name="textIsSelectable" format="boolean" />

    <!-- Where to ellipsize text. -->
    <attr name="ellipsize">
        <enum name="none" value="0" />
        <enum name="start" value="1" />
        <enum name="middle" value="2" />
        <enum name="end" value="3" />
        <enum name="marquee" value="4" />
    </attr>

    <!-- The type of data being placed in a text field, used to help an
         input method decide how to let the user enter text.  The constants
         here correspond to those defined by
         {@link android.text.InputType}.  Generally you can select
         a single value, though some can be combined together as
         indicated.  Setting this attribute to anything besides
         <var>none</var> also implies that the text is editable. -->
    <attr name="inputType">
        <!-- There is no content type.  The text is not editable. -->
        <flag name="none" value="0x00000000" />
        <!-- Just plain old text.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_NORMAL}. -->
        <flag name="text" value="0x00000001" />
        <!-- Can be combined with <var>text</var> and its variations to
             request capitalization of all characters.  Corresponds to
             {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_CHARACTERS}. -->
        <flag name="textCapCharacters" value="0x00001001" />
        <!-- Can be combined with <var>text</var> and its variations to
             request capitalization of the first character of every word.  Corresponds to
             {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_WORDS}. -->
        <flag name="textCapWords" value="0x00002001" />
        <!-- Can be combined with <var>text</var> and its variations to
             request capitalization of the first character of every sentence.  Corresponds to
             {@link android.text.InputType#TYPE_TEXT_FLAG_CAP_SENTENCES}. -->
        <flag name="textCapSentences" value="0x00004001" />
        <!-- Can be combined with <var>text</var> and its variations to
             request auto-correction of text being input.  Corresponds to
             {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_CORRECT}. -->
        <flag name="textAutoCorrect" value="0x00008001" />
        <!-- Can be combined with <var>text</var> and its variations to
             specify that this field will be doing its own auto-completion and
             talking with the input method appropriately.  Corresponds to
             {@link android.text.InputType#TYPE_TEXT_FLAG_AUTO_COMPLETE}. -->
        <flag name="textAutoComplete" value="0x00010001" />
        <!-- Can be combined with <var>text</var> and its variations to
             allow multiple lines of text in the field.  If this flag is not set,
             the text field will be constrained to a single line.  Corresponds to
             {@link android.text.InputType#TYPE_TEXT_FLAG_MULTI_LINE}. -->
        <flag name="textMultiLine" value="0x00020001" />
        <!-- Can be combined with <var>text</var> and its variations to
             indicate that though the regular text view should not be multiple
             lines, the IME should provide multiple lines if it can.  Corresponds to
             {@link android.text.InputType#TYPE_TEXT_FLAG_IME_MULTI_LINE}. -->
        <flag name="textImeMultiLine" value="0x00040001" />
        <!-- Can be combined with <var>text</var> and its variations to
             indicate that the IME should not show any
             dictionary-based word suggestions.  Corresponds to
             {@link android.text.InputType#TYPE_TEXT_FLAG_NO_SUGGESTIONS}. -->
        <flag name="textNoSuggestions" value="0x00080001" />
        <!-- Text that will be used as a URI.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_URI}. -->
        <flag name="textUri" value="0x00000011" />
        <!-- Text that will be used as an e-mail address.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_ADDRESS}. -->
        <flag name="textEmailAddress" value="0x00000021" />
        <!-- Text that is being supplied as the subject of an e-mail.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_EMAIL_SUBJECT}. -->
        <flag name="textEmailSubject" value="0x00000031" />
        <!-- Text that is the content of a short message.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_SHORT_MESSAGE}. -->
        <flag name="textShortMessage" value="0x00000041" />
        <!-- Text that is the content of a long message.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_LONG_MESSAGE}. -->
        <flag name="textLongMessage" value="0x00000051" />
        <!-- Text that is the name of a person.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_PERSON_NAME}. -->
        <flag name="textPersonName" value="0x00000061" />
        <!-- Text that is being supplied as a postal mailing address.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_POSTAL_ADDRESS}. -->
        <flag name="textPostalAddress" value="0x00000071" />
        <!-- Text that is a password.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_PASSWORD}. -->
        <flag name="textPassword" value="0x00000081" />
        <!-- Text that is a password that should be visible.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}. -->
        <flag name="textVisiblePassword" value="0x00000091" />
        <!-- Text that is being supplied as text in a web form.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EDIT_TEXT}. -->
        <flag name="textWebEditText" value="0x000000a1" />
        <!-- Text that is filtering some other data.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_FILTER}. -->
        <flag name="textFilter" value="0x000000b1" />
        <!-- Text that is for phonetic pronunciation, such as a phonetic name
             field in a contact entry.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_PHONETIC}. -->
        <flag name="textPhonetic" value="0x000000c1" />
        <!-- Text that will be used as an e-mail address on a web form.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS}. -->
        <flag name="textWebEmailAddress" value="0x000000d1" />
        <!-- Text that will be used as a password on a web form.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_TEXT} |
             {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}. -->
        <flag name="textWebPassword" value="0x000000e1" />
        <!-- A numeric only field.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_NUMBER} |
             {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}. -->
        <flag name="number" value="0x00000002" />
        <!-- Can be combined with <var>number</var> and its other options to
             allow a signed number.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_NUMBER} |
             {@link android.text.InputType#TYPE_NUMBER_FLAG_SIGNED}. -->
        <flag name="numberSigned" value="0x00001002" />
        <!-- Can be combined with <var>number</var> and its other options to
             allow a decimal (fractional) number.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_NUMBER} |
             {@link android.text.InputType#TYPE_NUMBER_FLAG_DECIMAL}. -->
        <flag name="numberDecimal" value="0x00002002" />
        <!-- A numeric password field.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_NUMBER} |
             {@link android.text.InputType#TYPE_NUMBER_VARIATION_PASSWORD}. -->
        <flag name="numberPassword" value="0x00000012" />
        <!-- For entering a phone number.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_PHONE}. -->
        <flag name="phone" value="0x00000003" />
        <!-- For entering a date and time.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_DATETIME} |
             {@link android.text.InputType#TYPE_DATETIME_VARIATION_NORMAL}. -->
        <flag name="datetime" value="0x00000004" />
        <!-- For entering a date.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_DATETIME} |
             {@link android.text.InputType#TYPE_DATETIME_VARIATION_DATE}. -->
        <flag name="date" value="0x00000014" />
        <!-- For entering a time.  Corresponds to
             {@link android.text.InputType#TYPE_CLASS_DATETIME} |
             {@link android.text.InputType#TYPE_DATETIME_VARIATION_TIME}. -->
        <flag name="time" value="0x00000024" />
    </attr>

    <!-- Additional features you can enable in an IME associated with an editor
         to improve the integration with your application.  The constants
         here correspond to those defined by
         {@link android.view.inputmethod.EditorInfo#imeOptions}. -->
    <attr name="imeOptions">
        <!-- There are no special semantics associated with this editor. -->
        <flag name="normal" value="0x00000000" />
        <!-- There is no specific action associated with this editor, let the
             editor come up with its own if it can.
             Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_NULL}. -->
        <flag name="actionUnspecified" value="0x00000000" />
        <!-- This editor has no action associated with it.
             Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_ACTION_NONE}. -->
        <flag name="actionNone" value="0x00000001" />
        <!-- The action key performs a "go"
             operation to take the user to the target of the text they typed.
             Typically used, for example, when entering a URL.
             Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_ACTION_GO}. -->
        <flag name="actionGo" value="0x00000002" />
        <!-- The action key performs a "search"
             operation, taking the user to the results of searching for the text
             the have typed (in whatever context is appropriate).
             Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEARCH}. -->
        <flag name="actionSearch" value="0x00000003" />
        <!-- The action key performs a "send"
             operation, delivering the text to its target.  This is typically used
             when composing a message.
             Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_ACTION_SEND}. -->
        <flag name="actionSend" value="0x00000004" />
        <!-- The action key performs a "next"
             operation, taking the user to the next field that will accept text.
             Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_ACTION_NEXT}. -->
        <flag name="actionNext" value="0x00000005" />
        <!-- The action key performs a "done"
             operation, closing the soft input method.
             Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_ACTION_DONE}. -->
        <flag name="actionDone" value="0x00000006" />
        <!-- The action key performs a "previous"
             operation, taking the user to the previous field that will accept text.
             Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_ACTION_PREVIOUS}. -->
        <flag name="actionPrevious" value="0x00000007" />
        <!-- Used to request that the IME should not update any personalized data such as typing
             history and personalized language model based on what the user typed on this text
             editing object. Typical use cases are:
             <ul>
                 <li>When the application is in a special mode, where user's activities are expected
                 to be not recorded in the application's history. Some web browsers and chat
                 applications may have this kind of modes.</li>
                 <li>When storing typing history does not make much sense.  Specifying this flag in
                 typing games may help to avoid typing history from being filled up with words that
                 the user is less likely to type in their daily life.  Another example is that when
                 the application already knows that the expected input is not a valid word (e.g. a
                 promotion code that is not a valid word in any natural language).</li>
             </ul>
             <p>Applications need to be aware that the flag is not a guarantee, and some IMEs may
             not respect it.</p> -->
        <flag name="flagNoPersonalizedLearning" value="0x1000000" />
        <!-- Used to request that the IME never go
             into fullscreen mode.  Applications need to be aware that the flag is not
             a guarantee, and not all IMEs will respect it.
             <p>Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}. -->
        <flag name="flagNoFullscreen" value="0x2000000" />
        <!-- Like flagNavigateNext, but
             specifies there is something interesting that a backward navigation
             can focus on.  If the user selects the IME's facility to backward
             navigate, this will show up in the application as an actionPrevious
             at {@link android.view.inputmethod.InputConnection#performEditorAction(int)
             InputConnection.performEditorAction(int)}.
             <p>Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_FULLSCREEN}. -->
        <flag name="flagNavigatePrevious" value="0x4000000" />
        <!-- Used to specify that there is something
             interesting that a forward navigation can focus on. This is like using
             actionNext, except allows the IME to be multiline (with
             an enter key) as well as provide forward navigation.  Note that some
             IMEs may not be able to do this, especially when running on a small
             screen where there is little space.  In that case it does not need to
             present a UI for this option.  Like actionNext, if the
             user selects the IME's facility to forward navigate, this will show up
             in the application at
             {@link android.view.inputmethod.InputConnection#performEditorAction(int)
             InputConnection.performEditorAction(int)}.
             <p>Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_FLAG_NAVIGATE_NEXT}. -->
        <flag name="flagNavigateNext" value="0x8000000" />
        <!-- Used to specify that the IME does not need
             to show its extracted text UI.  For input methods that may be fullscreen,
             often when in landscape mode, this allows them to be smaller and let part
             of the application be shown behind.  Though there will likely be limited
             access to the application available from the user, it can make the
             experience of a (mostly) fullscreen IME less jarring.  Note that when
             this flag is specified the IME may <em>not</em> be set up to be able
             to display text, so it should only be used in situations where this is
             not needed.
             <p>Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_EXTRACT_UI}. -->
        <flag name="flagNoExtractUi" value="0x10000000" />
        <!-- Used in conjunction with a custom action, this indicates that the
             action should not be available as an accessory button when the
             input method is full-screen.
             Note that by setting this flag, there can be cases where the action
             is simply never available to the user.  Setting this generally means
             that you think showing text being edited is more important than the
             action you have supplied.
             <p>Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ACCESSORY_ACTION}. -->
        <flag name="flagNoAccessoryAction" value="0x20000000" />
        <!-- Used in conjunction with a custom action,
             this indicates that the action should not be available in-line as
             a replacement for the "enter" key.  Typically this is
             because the action has such a significant impact or is not recoverable
             enough that accidentally hitting it should be avoided, such as sending
             a message.    Note that {@link android.widget.TextView} will
             automatically set this flag for you on multi-line text views.
             <p>Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_FLAG_NO_ENTER_ACTION}. -->
        <flag name="flagNoEnterAction" value="0x40000000" />
        <!-- Used to request that the IME should be capable of inputting ASCII
             characters.  The intention of this flag is to ensure that the user
             can type Roman alphabet characters in a {@link android.widget.TextView}
             used for, typically, account ID or password input.  It is expected that IMEs
             normally are able to input ASCII even without being told so (such IMEs
             already respect this flag in a sense), but there could be some cases they
             aren't when, for instance, only non-ASCII input languagaes like Arabic,
             Greek, Hebrew, Russian are enabled in the IME.  Applications need to be
             aware that the flag is not a guarantee, and not all IMEs will respect it.
             However, it is strongly recommended for IME authors to respect this flag
             especially when their IME could end up with a state that has only non-ASCII
             input languages enabled.
             <p>Corresponds to
             {@link android.view.inputmethod.EditorInfo#IME_FLAG_FORCE_ASCII}. -->
        <flag name="flagForceAscii" value="0x80000000" />
    </attr>

    <!-- A coordinate in the X dimension. -->
    <attr name="x" format="dimension" />
    <!-- A coordinate in the Y dimension. -->
    <attr name="y" format="dimension" />

    <!-- Specifies how an object should position its content, on both the X and Y axes,
         within its own bounds.  -->
    <attr name="gravity">
        <!-- 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>

    <!-- Controls whether links such as urls and email addresses are
         automatically found and converted to clickable links.  The default
         value is "none", disabling this feature. -->
    <attr name="autoLink">
        <!-- Match no patterns (default). -->
        <flag name="none" value="0x00" />
        <!-- Match Web URLs. -->
        <flag name="web" value="0x01" />
        <!-- Match email addresses. -->
        <flag name="email" value="0x02" />
        <!-- Match phone numbers. -->
        <flag name="phone" value="0x04" />
        <!-- Match map addresses. -->
        <flag name="map" value="0x08" />
        <!-- Match all patterns (equivalent to web|email|phone|map). -->
        <flag name="all" value="0x0f" />
    </attr>

    <!-- Reference to an array resource that will populate a list/adapter. -->
    <attr name="entries" format="reference" />

    <!-- 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="layout_gravity">
        <!-- 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>

    <!-- Standard orientation constant. -->
    <attr name="orientation">
        <!-- Defines an horizontal widget. -->
        <enum name="horizontal" value="0" />
        <!-- Defines a vertical widget. -->
        <enum name="vertical" value="1" />
    </attr>

    <!-- Alignment constants. -->
    <attr name="alignmentMode">
        <!-- Align the bounds of the children.
        See {@link android.widget.GridLayout#ALIGN_BOUNDS}. -->
        <enum name="alignBounds" value="0" />
        <!-- Align the margins of the children.
        See {@link android.widget.GridLayout#ALIGN_MARGINS}. -->
        <enum name="alignMargins" value="1" />
    </attr>

    <!-- ========================== -->
    <!-- Key Codes                  -->
    <!-- ========================== -->
    <eat-comment />

    <!-- This enum provides the same keycode values as can be found in
        {@link android.view.KeyEvent}. -->
    <attr name="keycode">
        <enum name="KEYCODE_UNKNOWN" value="0" />
        <enum name="KEYCODE_SOFT_LEFT" value="1" />
        <enum name="KEYCODE_SOFT_RIGHT" value="2" />
        <enum name="KEYCODE_HOME" value="3" />
        <enum name="KEYCODE_BACK" value="4" />
        <enum name="KEYCODE_CALL" value="5" />
        <enum name="KEYCODE_ENDCALL" value="6" />
        <enum name="KEYCODE_0" value="7" />
        <enum name="KEYCODE_1" value="8" />
        <enum name="KEYCODE_2" value="9" />
        <enum name="KEYCODE_3" value="10" />
        <enum name="KEYCODE_4" value="11" />
        <enum name="KEYCODE_5" value="12" />
        <enum name="KEYCODE_6" value="13" />
        <enum name="KEYCODE_7" value="14" />
        <enum name="KEYCODE_8" value="15" />
        <enum name="KEYCODE_9" value="16" />
        <enum name="KEYCODE_STAR" value="17" />
        <enum name="KEYCODE_POUND" value="18" />
        <enum name="KEYCODE_DPAD_UP" value="19" />
        <enum name="KEYCODE_DPAD_DOWN" value="20" />
        <enum name="KEYCODE_DPAD_LEFT" value="21" />
        <enum name="KEYCODE_DPAD_RIGHT" value="22" />
        <enum name="KEYCODE_DPAD_CENTER" value="23" />
        <enum name="KEYCODE_VOLUME_UP" value="24" />
        <enum name="KEYCODE_VOLUME_DOWN" value="25" />
        <enum name="KEYCODE_POWER" value="26" />
        <enum name="KEYCODE_CAMERA" value="27" />
        <enum name="KEYCODE_CLEAR" value="28" />
        <enum name="KEYCODE_A" value="29" />
        <enum name="KEYCODE_B" value="30" />
        <enum name="KEYCODE_C" value="31" />
        <enum name="KEYCODE_D" value="32" />
        <enum name="KEYCODE_E" value="33" />
        <enum name="KEYCODE_F" value="34" />
        <enum name="KEYCODE_G" value="35" />
        <enum name="KEYCODE_H" value="36" />
        <enum name="KEYCODE_I" value="37" />
        <enum name="KEYCODE_J" value="38" />
        <enum name="KEYCODE_K" value="39" />
        <enum name="KEYCODE_L" value="40" />
        <enum name="KEYCODE_M" value="41" />
        <enum name="KEYCODE_N" value="42" />
        <enum name="KEYCODE_O" value="43" />
        <enum name="KEYCODE_P" value="44" />
        <enum name="KEYCODE_Q" value="45" />
        <enum name="KEYCODE_R" value="46" />
        <enum name="KEYCODE_S" value="47" />
        <enum name="KEYCODE_T" value="48" />
        <enum name="KEYCODE_U" value="49" />
        <enum name="KEYCODE_V" value="50" />
        <enum name="KEYCODE_W" value="51" />
        <enum name="KEYCODE_X" value="52" />
        <enum name="KEYCODE_Y" value="53" />
        <enum name="KEYCODE_Z" value="54" />
        <enum name="KEYCODE_COMMA" value="55" />
        <enum name="KEYCODE_PERIOD" value="56" />
        <enum name="KEYCODE_ALT_LEFT" value="57" />
        <enum name="KEYCODE_ALT_RIGHT" value="58" />
        <enum name="KEYCODE_SHIFT_LEFT" value="59" />
        <enum name="KEYCODE_SHIFT_RIGHT" value="60" />
        <enum name="KEYCODE_TAB" value="61" />
        <enum name="KEYCODE_SPACE" value="62" />
        <enum name="KEYCODE_SYM" value="63" />
        <enum name="KEYCODE_EXPLORER" value="64" />
        <enum name="KEYCODE_ENVELOPE" value="65" />
        <enum name="KEYCODE_ENTER" value="66" />
        <enum name="KEYCODE_DEL" value="67" />
        <enum name="KEYCODE_GRAVE" value="68" />
        <enum name="KEYCODE_MINUS" value="69" />
        <enum name="KEYCODE_EQUALS" value="70" />
        <enum name="KEYCODE_LEFT_BRACKET" value="71" />
        <enum name="KEYCODE_RIGHT_BRACKET" value="72" />
        <enum name="KEYCODE_BACKSLASH" value="73" />
        <enum name="KEYCODE_SEMICOLON" value="74" />
        <enum name="KEYCODE_APOSTROPHE" value="75" />
        <enum name="KEYCODE_SLASH" value="76" />
        <enum name="KEYCODE_AT" value="77" />
        <enum name="KEYCODE_NUM" value="78" />
        <enum name="KEYCODE_HEADSETHOOK" value="79" />
        <enum name="KEYCODE_FOCUS" value="80" />
        <enum name="KEYCODE_PLUS" value="81" />
        <enum name="KEYCODE_MENU" value="82" />
        <enum name="KEYCODE_NOTIFICATION" value="83" />
        <enum name="KEYCODE_SEARCH" value="84" />
        <enum name="KEYCODE_MEDIA_PLAY_PAUSE" value="85" />
        <enum name="KEYCODE_MEDIA_STOP" value="86" />
        <enum name="KEYCODE_MEDIA_NEXT" value="87" />
        <enum name="KEYCODE_MEDIA_PREVIOUS" value="88" />
        <enum name="KEYCODE_MEDIA_REWIND" value="89" />
        <enum name="KEYCODE_MEDIA_FAST_FORWARD" value="90" />
        <enum name="KEYCODE_MUTE" value="91" />
        <enum name="KEYCODE_PAGE_UP" value="92" />
        <enum name="KEYCODE_PAGE_DOWN" value="93" />
        <enum name="KEYCODE_PICTSYMBOLS" value="94" />
        <enum name="KEYCODE_SWITCH_CHARSET" value="95" />
        <enum name="KEYCODE_BUTTON_A" value="96" />
        <enum name="KEYCODE_BUTTON_B" value="97" />
        <enum name="KEYCODE_BUTTON_C" value="98" />
        <enum name="KEYCODE_BUTTON_X" value="99" />
        <enum name="KEYCODE_BUTTON_Y" value="100" />
        <enum name="KEYCODE_BUTTON_Z" value="101" />
        <enum name="KEYCODE_BUTTON_L1" value="102" />
        <enum name="KEYCODE_BUTTON_R1" value="103" />
        <enum name="KEYCODE_BUTTON_L2" value="104" />
        <enum name="KEYCODE_BUTTON_R2" value="105" />
        <enum name="KEYCODE_BUTTON_THUMBL" value="106" />
        <enum name="KEYCODE_BUTTON_THUMBR" value="107" />
        <enum name="KEYCODE_BUTTON_START" value="108" />
        <enum name="KEYCODE_BUTTON_SELECT" value="109" />
        <enum name="KEYCODE_BUTTON_MODE" value="110" />
        <enum name="KEYCODE_ESCAPE" value="111" />
        <enum name="KEYCODE_FORWARD_DEL" value="112" />
        <enum name="KEYCODE_CTRL_LEFT" value="113" />
        <enum name="KEYCODE_CTRL_RIGHT" value="114" />
        <enum name="KEYCODE_CAPS_LOCK" value="115" />
        <enum name="KEYCODE_SCROLL_LOCK" value="116" />
        <enum name="KEYCODE_META_LEFT" value="117" />
        <enum name="KEYCODE_META_RIGHT" value="118" />
        <enum name="KEYCODE_FUNCTION" value="119" />
        <enum name="KEYCODE_SYSRQ" value="120" />
        <enum name="KEYCODE_BREAK" value="121" />
        <enum name="KEYCODE_MOVE_HOME" value="122" />
        <enum name="KEYCODE_MOVE_END" value="123" />
        <enum name="KEYCODE_INSERT" value="124" />
        <enum name="KEYCODE_FORWARD" value="125" />
        <enum name="KEYCODE_MEDIA_PLAY" value="126" />
        <enum name="KEYCODE_MEDIA_PAUSE" value="127" />
        <enum name="KEYCODE_MEDIA_CLOSE" value="128" />
        <enum name="KEYCODE_MEDIA_EJECT" value="129" />
        <enum name="KEYCODE_MEDIA_RECORD" value="130" />
        <enum name="KEYCODE_F1" value="131" />
        <enum name="KEYCODE_F2" value="132" />
        <enum name="KEYCODE_F3" value="133" />
        <enum name="KEYCODE_F4" value="134" />
        <enum name="KEYCODE_F5" value="135" />
        <enum name="KEYCODE_F6" value="136" />
        <enum name="KEYCODE_F7" value="137" />
        <enum name="KEYCODE_F8" value="138" />
        <enum name="KEYCODE_F9" value="139" />
        <enum name="KEYCODE_F10" value="140" />
        <enum name="KEYCODE_F11" value="141" />
        <enum name="KEYCODE_F12" value="142" />
        <enum name="KEYCODE_NUM_LOCK" value="143" />
        <enum name="KEYCODE_NUMPAD_0" value="144" />
        <enum name="KEYCODE_NUMPAD_1" value="145" />
        <enum name="KEYCODE_NUMPAD_2" value="146" />
        <enum name="KEYCODE_NUMPAD_3" value="147" />
        <enum name="KEYCODE_NUMPAD_4" value="148" />
        <enum name="KEYCODE_NUMPAD_5" value="149" />
        <enum name="KEYCODE_NUMPAD_6" value="150" />
        <enum name="KEYCODE_NUMPAD_7" value="151" />
        <enum name="KEYCODE_NUMPAD_8" value="152" />
        <enum name="KEYCODE_NUMPAD_9" value="153" />
        <enum name="KEYCODE_NUMPAD_DIVIDE" value="154" />
        <enum name="KEYCODE_NUMPAD_MULTIPLY" value="155" />
        <enum name="KEYCODE_NUMPAD_SUBTRACT" value="156" />
        <enum name="KEYCODE_NUMPAD_ADD" value="157" />
        <enum name="KEYCODE_NUMPAD_DOT" value="158" />
        <enum name="KEYCODE_NUMPAD_COMMA" value="159" />
        <enum name="KEYCODE_NUMPAD_ENTER" value="160" />
        <enum name="KEYCODE_NUMPAD_EQUALS" value="161" />
        <enum name="KEYCODE_NUMPAD_LEFT_PAREN" value="162" />
        <enum name="KEYCODE_NUMPAD_RIGHT_PAREN" value="163" />
        <enum name="KEYCODE_VOLUME_MUTE" value="164" />
        <enum name="KEYCODE_INFO" value="165" />
        <enum name="KEYCODE_CHANNEL_UP" value="166" />
        <enum name="KEYCODE_CHANNEL_DOWN" value="167" />
        <enum name="KEYCODE_ZOOM_IN" value="168" />
        <enum name="KEYCODE_ZOOM_OUT" value="169" />
        <enum name="KEYCODE_TV" value="170" />
        <enum name="KEYCODE_WINDOW" value="171" />
        <enum name="KEYCODE_GUIDE" value="172" />
        <enum name="KEYCODE_DVR" value="173" />
        <enum name="KEYCODE_BOOKMARK" value="174" />
        <enum name="KEYCODE_CAPTIONS" value="175" />
        <enum name="KEYCODE_SETTINGS" value="176" />
        <enum name="KEYCODE_TV_POWER" value="177" />
        <enum name="KEYCODE_TV_INPUT" value="178" />
        <enum name="KEYCODE_STB_POWER" value="179" />
        <enum name="KEYCODE_STB_INPUT" value="180" />
        <enum name="KEYCODE_AVR_POWER" value="181" />
        <enum name="KEYCODE_AVR_INPUT" value="182" />
        <enum name="KEYCODE_PROG_GRED" value="183" />
        <enum name="KEYCODE_PROG_GREEN" value="184" />
        <enum name="KEYCODE_PROG_YELLOW" value="185" />
        <enum name="KEYCODE_PROG_BLUE" value="186" />
        <enum name="KEYCODE_APP_SWITCH" value="187" />
        <enum name="KEYCODE_BUTTON_1" value="188" />
        <enum name="KEYCODE_BUTTON_2" value="189" />
        <enum name="KEYCODE_BUTTON_3" value="190" />
        <enum name="KEYCODE_BUTTON_4" value="191" />
        <enum name="KEYCODE_BUTTON_5" value="192" />
        <enum name="KEYCODE_BUTTON_6" value="193" />
        <enum name="KEYCODE_BUTTON_7" value="194" />
        <enum name="KEYCODE_BUTTON_8" value="195" />
        <enum name="KEYCODE_BUTTON_9" value="196" />
        <enum name="KEYCODE_BUTTON_10" value="197" />
        <enum name="KEYCODE_BUTTON_11" value="198" />
        <enum name="KEYCODE_BUTTON_12" value="199" />
        <enum name="KEYCODE_BUTTON_13" value="200" />
        <enum name="KEYCODE_BUTTON_14" value="201" />
        <enum name="KEYCODE_BUTTON_15" value="202" />
        <enum name="KEYCODE_BUTTON_16" value="203" />
        <enum name="KEYCODE_LANGUAGE_SWITCH" value="204" />
        <enum name="KEYCODE_MANNER_MODE" value="205" />
        <enum name="KEYCODE_3D_MODE" value="206" />
        <enum name="KEYCODE_CONTACTS" value="207" />
        <enum name="KEYCODE_CALENDAR" value="208" />
        <enum name="KEYCODE_MUSIC" value="209" />
        <enum name="KEYCODE_CALCULATOR" value="210" />
        <enum name="KEYCODE_ZENKAKU_HANKAKU" value="211" />
        <enum name="KEYCODE_EISU" value="212" />
        <enum name="KEYCODE_MUHENKAN" value="213" />
        <enum name="KEYCODE_HENKAN" value="214" />
        <enum name="KEYCODE_KATAKANA_HIRAGANA" value="215" />
        <enum name="KEYCODE_YEN" value="216" />
        <enum name="KEYCODE_RO" value="217" />
        <enum name="KEYCODE_KANA" value="218" />
        <enum name="KEYCODE_ASSIST" value="219" />
        <enum name="KEYCODE_BRIGHTNESS_DOWN" value="220" />
        <enum name="KEYCODE_BRIGHTNESS_UP" value="221" />
        <enum name="KEYCODE_MEDIA_AUDIO_TRACK" value="222" />
        <enum name="KEYCODE_MEDIA_SLEEP" value="223" />
        <enum name="KEYCODE_MEDIA_WAKEUP" value="224" />
        <enum name="KEYCODE_PAIRING" value="225" />
        <enum name="KEYCODE_MEDIA_TOP_MENU" value="226" />
        <enum name="KEYCODE_11" value="227" />
        <enum name="KEYCODE_12" value="228" />
        <enum name="KEYCODE_LAST_CHANNEL" value="229" />
        <enum name="KEYCODE_TV_DATA_SERVICE" value="230" />
        <enum name="KEYCODE_VOICE_ASSIST" value="231" />
        <enum name="KEYCODE_TV_RADIO_SERVICE" value="232" />
        <enum name="KEYCODE_TV_TELETEXT" value="233" />
        <enum name="KEYCODE_TV_NUMBER_ENTRY" value="234" />
        <enum name="KEYCODE_TV_TERRESTRIAL_ANALOG" value="235" />
        <enum name="KEYCODE_TV_TERRESTRIAL_DIGITAL" value="236" />
        <enum name="KEYCODE_TV_SATELLITE" value="237" />
        <enum name="KEYCODE_TV_SATELLITE_BS" value="238" />
        <enum name="KEYCODE_TV_SATELLITE_CS" value="239" />
        <enum name="KEYCODE_TV_SATELLITE_SERVICE" value="240" />
        <enum name="KEYCODE_TV_NETWORK" value="241" />
        <enum name="KEYCODE_TV_ANTENNA_CABLE" value="242" />
        <enum name="KEYCODE_TV_INPUT_HDMI_1" value="243" />
        <enum name="KEYCODE_TV_INPUT_HDMI_2" value="244" />
        <enum name="KEYCODE_TV_INPUT_HDMI_3" value="245" />
        <enum name="KEYCODE_TV_INPUT_HDMI_4" value="246" />
        <enum name="KEYCODE_TV_INPUT_COMPOSITE_1" value="247" />
        <enum name="KEYCODE_TV_INPUT_COMPOSITE_2" value="248" />
        <enum name="KEYCODE_TV_INPUT_COMPONENT_1" value="249" />
        <enum name="KEYCODE_TV_INPUT_COMPONENT_2" value="250" />
        <enum name="KEYCODE_TV_INPUT_VGA_1" value="251" />
        <enum name="KEYCODE_TV_AUDIO_DESCRIPTION" value="252" />
        <enum name="KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP" value="253" />
        <enum name="KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN" value="254" />
        <enum name="KEYCODE_TV_ZOOM_MODE" value="255" />
        <enum name="KEYCODE_TV_CONTENTS_MENU" value="256" />
        <enum name="KEYCODE_TV_MEDIA_CONTEXT_MENU" value="257" />
        <enum name="KEYCODE_TV_TIMER_PROGRAMMING" value="258" />
        <enum name="KEYCODE_HELP" value="259" />
        <enum name="KEYCODE_NAVIGATE_PREVIOUS" value="260" />
        <enum name="KEYCODE_NAVIGATE_NEXT" value="261" />
        <enum name="KEYCODE_NAVIGATE_IN" value="262" />
        <enum name="KEYCODE_NAVIGATE_OUT" value="263" />
        <enum name="KEYCODE_STEM_PRIMARY" value="264" />
        <enum name="KEYCODE_STEM_1" value="265" />
        <enum name="KEYCODE_STEM_2" value="266" />
        <enum name="KEYCODE_STEM_3" value="267" />
        <enum name="KEYCODE_DPAD_UP_LEFT" value="268" />
        <enum name="KEYCODE_DPAD_DOWN_LEFT" value="269" />
        <enum name="KEYCODE_DPAD_UP_RIGHT" value="270" />
        <enum name="KEYCODE_DPAD_DOWN_RIGHT" value="271" />
        <enum name="KEYCODE_MEDIA_SKIP_FORWARD" value="272" />
        <enum name="KEYCODE_MEDIA_SKIP_BACKWARD" value="273" />
        <enum name="KEYCODE_MEDIA_STEP_FORWARD" value="274" />
        <enum name="KEYCODE_MEDIA_STEP_BACKWARD" value="275" />
        <enum name="KEYCODE_SOFT_SLEEP" value="276" />
        <enum name="KEYCODE_CUT" value="277" />
        <enum name="KEYCODE_COPY" value="278" />
        <enum name="KEYCODE_PASTE" value="279" />
        <enum name="KEYCODE_SYSTEM_NAVIGATION_UP" value="280" />
        <enum name="KEYCODE_SYSTEM_NAVIGATION_DOWN" value="281" />
        <enum name="KEYCODE_SYSTEM_NAVIGATION_LEFT" value="282" />
        <enum name="KEYCODE_SYSTEM_NAVIGATION_RIGHT" value="283" />
        <enum name="KEYCODE_ALL_APPS" value="284" />
    </attr>

    <!-- ***************************************************************** -->
    <!-- These define collections of attributes that can are with classes. -->
    <!-- ***************************************************************** -->

    <!-- ========================== -->
    <!-- Special attribute classes. -->
    <!-- ========================== -->
    <eat-comment />

    <!-- The set of attributes that describe a Windows's theme. -->
    <declare-styleable name="Window">
        <attr name="windowBackground" />
        <attr name="windowBackgroundFallback" />
        <attr name="windowContentOverlay" />
        <attr name="windowFrame" />
        <attr name="windowNoTitle" />
        <attr name="windowFullscreen" />
        <attr name="windowOverscan" />
        <attr name="windowIsFloating" />
        <attr name="windowIsTranslucent" />
        <attr name="windowShowWallpaper" />
        <attr name="windowAnimationStyle" />
        <attr name="windowSoftInputMode" />
        <attr name="windowDisablePreview" />
        <attr name="windowNoDisplay" />
        <attr name="textColor" />
        <attr name="backgroundDimEnabled" />
        <attr name="backgroundDimAmount" />
        <attr name="windowActionBar" />
        <attr name="windowActionModeOverlay" />
        <attr name="windowActionBarOverlay" />
        <attr name="windowEnableSplitTouch" />
        <attr name="windowCloseOnTouchOutside" />
        <attr name="windowTranslucentStatus" />
        <attr name="windowTranslucentNavigation" />
        <attr name="windowSwipeToDismiss" />
        <attr name="windowContentTransitions" />
        <attr name="windowActivityTransitions" />
        <attr name="windowContentTransitionManager" />
        <attr name="windowActionBarFullscreenDecorLayout" />

        <!-- The minimum width the window is allowed to be, along the major
             axis of the screen.  That is, when in landscape.  Can be either
             an absolute dimension or a fraction of the screen size in that
             dimension. -->
        <attr name="windowMinWidthMajor" format="dimension|fraction" />
        <!-- The minimum width the window is allowed to be, along the minor
             axis of the screen.  That is, when in portrait.  Can be either
             an absolute dimension or a fraction of the screen size in that
             dimension. -->
        <attr name="windowMinWidthMinor" format="dimension|fraction" />

        <!-- A fixed width for the window along the major axis of the screen,
             that is, when in landscape. Can be either an absolute dimension
             or a fraction of the screen size in that dimension. -->
        <attr name="windowFixedWidthMajor" format="dimension|fraction" />
        <!-- A fixed height for the window along the minor axis of the screen,
             that is, when in landscape. Can be either an absolute dimension
             or a fraction of the screen size in that dimension. -->
        <attr name="windowFixedHeightMinor" format="dimension|fraction" />

        <!-- A fixed width for the window along the minor axis of the screen,
             that is, when in portrait. Can be either an absolute dimension
             or a fraction of the screen size in that dimension. -->
        <attr name="windowFixedWidthMinor" format="dimension|fraction" />
        <!-- A fixed height for the window along the major axis of the screen,
             that is, when in portrait. Can be either an absolute dimension
             or a fraction of the screen size in that dimension. -->
        <attr name="windowFixedHeightMajor" format="dimension|fraction" />
        <attr name="windowOutsetBottom" format="dimension" />
        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move Views into the initial Window's content Scene. Corresponds to
             {@link android.view.Window#setEnterTransition(android.transition.Transition)}. -->
        <attr name="windowEnterTransition"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move Views out of the scene when the Window is
             preparing to close. Corresponds to
             {@link android.view.Window#setReturnTransition(android.transition.Transition)}. -->
        <attr name="windowReturnTransition"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move Views out of the Window's content Scene when launching a new Activity.
             Corresponds to
             {@link android.view.Window#setExitTransition(android.transition.Transition)}. -->
        <attr name="windowExitTransition"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move Views in to the scene when returning from a previously-started Activity.
             Corresponds to
             {@link android.view.Window#setReenterTransition(android.transition.Transition)}. -->
        <attr name="windowReenterTransition"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move shared elements transferred into the Window's initial content Scene.
             Corresponds to {@link android.view.Window#setSharedElementEnterTransition(
             android.transition.Transition)}. -->
        <attr name="windowSharedElementEnterTransition"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used to move shared elements transferred back to a calling Activity.
             Corresponds to {@link android.view.Window#setSharedElementReturnTransition(
             android.transition.Transition)}. -->
        <attr name="windowSharedElementReturnTransition"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used when starting a new Activity to move shared elements prior to transferring
             to the called Activity.
             Corresponds to {@link android.view.Window#setSharedElementExitTransition(
             android.transition.Transition)}. -->
        <attr name="windowSharedElementExitTransition"/>

        <!-- Reference to a Transition XML resource defining the desired Transition
             used for shared elements transferred back to a calling Activity.
             Corresponds to {@link android.view.Window#setSharedElementReenterTransition(
             android.transition.Transition)}. -->
        <attr name="windowSharedElementReenterTransition"/>


        <!-- Flag indicating whether this Window's transition should overlap with
             the exiting transition of the calling Activity. Corresponds to
             {@link android.view.Window#setAllowEnterTransitionOverlap(boolean)}. -->
        <attr name="windowAllowEnterTransitionOverlap"/>

        <!-- Flag indicating whether this Window's transition should overlap with
             the exiting transition of the called Activity when the called Activity
             finishes. Corresponds to
             {@link android.view.Window#setAllowReturnTransitionOverlap(boolean)}. -->
        <attr name="windowAllowReturnTransitionOverlap"/>

        <!-- Indicates whether or not shared elements should use an overlay
             during transitions. The default value is true. -->
        <attr name="windowSharedElementsUseOverlay"/>

        <!-- Flag indicating whether this Window is responsible for drawing the background for the
             system bars. If true and the window is not floating, the system bars are drawn with a
             transparent background and the corresponding areas in this window are filled with the
             colors specified in {@link android.R.attr#statusBarColor} and
             {@link android.R.attr#navigationBarColor}. Corresponds to
             {@link android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}. -->
        <attr name="windowDrawsSystemBarBackgrounds" format="boolean" />

        <!-- The color for the status bar. If the color is not opaque, consider setting
             {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_STABLE} and
             {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN}.
             For this to take effect, the window must be drawing the system bar backgrounds with
             {@link android.R.attr#windowDrawsSystemBarBackgrounds} and the status bar must not
             have been requested to be translucent with
             {@link android.R.attr#windowTranslucentStatus}.
             Corresponds to {@link android.view.Window#setStatusBarColor(int)}. -->
        <attr name="statusBarColor" format="color" />

        <!-- The color for the navigation bar. If the color is not opaque, consider setting
             {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_STABLE} and
             {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION}.
             For this to take effect, the window must be drawing the system bar backgrounds with
             {@link android.R.attr#windowDrawsSystemBarBackgrounds} and the navigation bar must not
             have been requested to be translucent with
             {@link android.R.attr#windowTranslucentNavigation}.
             Corresponds to {@link android.view.Window#setNavigationBarColor(int)}. -->
        <attr name="navigationBarColor" format="color" />

        <!-- Shows a thin line of the specified color between the navigation bar and the app
             content.
             <p>For this to take effect, the window must be drawing the system bar backgrounds with
             {@link android.R.attr#windowDrawsSystemBarBackgrounds} and the navigation bar must not
             have been requested to be translucent with
             {@link android.R.attr#windowTranslucentNavigation}. -->
        <attr name="navigationBarDividerColor" format="color" />

        <!-- The duration, in milliseconds, of the window background fade duration
             when transitioning into or away from an Activity when called with an
             Activity Transition. Corresponds to
             {@link android.view.Window#setTransitionBackgroundFadeDuration(long)}. -->
        <attr name="windowTransitionBackgroundFadeDuration" />

        <!-- Elevation to use for the window. -->
        <attr name="windowElevation" format="dimension" />

        <!-- Whether to clip window content to the outline of the window background. -->
        <attr name="windowClipToOutline" format="boolean" />

        <!-- If set, the status bar will be drawn such that it is compatible with a light
             status bar background.
             <p>For this to take effect, the window must be drawing the system bar backgrounds with
             {@link android.R.attr#windowDrawsSystemBarBackgrounds} and the status bar must not
             have been requested to be translucent with
             {@link android.R.attr#windowTranslucentStatus}.
             Corresponds to setting {@link android.view.View#SYSTEM_UI_FLAG_LIGHT_STATUS_BAR} on
             the decor view. -->
        <attr name="windowLightStatusBar" format="boolean" />

        <!-- Reference to a drawable to be used as the splash screen content of the window. This
             drawable will be placed on top of the {@link android.R.attr#windowBackground} with its
             bounds inset by the system bars. If the drawable should not be inset by the system
             bars, use a fullscreen theme.
             <p>
             Note that even if no splashscreen content is set on the theme, the system may still
             show a splash screen using the other attributes on the theme, like the
             {@link android.R.attr#windowBackground}.
             -->
        <attr name="windowSplashscreenContent" format="reference" />

        <!-- If set, the navigation bar will be drawn such that it is
             compatible with a light navigation bar background.
             <p>For this to take effect, the window must be drawing the system bar backgrounds with
             {@link android.R.attr#windowDrawsSystemBarBackgrounds} and the navigation bar must not
             have been requested to be translucent with
             {@link android.R.attr#windowTranslucentNavigation}.
             Corresponds to setting {@link android.view.View#SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR} on
             the decor view. -->
         <attr name="windowLightNavigationBar" format="boolean" />
    </declare-styleable>

    <!-- The set of attributes that describe a AlertDialog's theme. -->
    <declare-styleable name="AlertDialog">
        <attr name="fullDark" format="reference|color" />
        <attr name="topDark" format="reference|color" />
        <attr name="centerDark" format="reference|color" />
        <attr name="bottomDark" format="reference|color" />
        <attr name="fullBright" format="reference|color" />
        <attr name="topBright" format="reference|color" />
        <attr name="centerBright" format="reference|color" />
        <attr name="bottomBright" format="reference|color" />
        <attr name="bottomMedium" format="reference|color" />
        <attr name="centerMedium" format="reference|color" />
        <attr name="layout" />
        <attr name="buttonPanelSideLayout" format="reference" />
        <attr name="listLayout" format="reference" />
        <attr name="multiChoiceItemLayout" format="reference" />
        <attr name="singleChoiceItemLayout" format="reference" />
        <attr name="listItemLayout" format="reference" />
        <attr name="progressLayout" format="reference" />
        <attr name="horizontalProgressLayout" format="reference" />
        <!-- @hide Not ready for public use. -->
        <attr name="showTitle" format="boolean" />
        <!-- @hide Whether fullDark, etc. should use default values if null. -->
        <attr name="needsDefaultBackgrounds" format="boolean" />
        <!-- @hide Workaround until we replace AlertController with custom layout. -->
        <attr name="controllerType">
            <!-- The default controller. -->
            <enum name="normal" value="0" />
            <!-- Controller for micro specific layout. -->
            <enum name="micro" value="1" />
        </attr>
        <!-- @hide Offset when scrolling to a selection. -->
        <attr name="selectionScrollOffset" format="dimension" />
    </declare-styleable>

    <!-- @hide -->
    <declare-styleable name="ButtonBarLayout">
        <!-- Whether to automatically stack the buttons when there is not
             enough space to lay them out side-by-side. -->
        <attr name="allowStacking" format="boolean" />
    </declare-styleable>

    <!-- Fragment animation class attributes. -->
    <declare-styleable name="FragmentAnimation">
        <attr name="fragmentOpenEnterAnimation" format="reference" />
        <attr name="fragmentOpenExitAnimation" format="reference" />
        <attr name="fragmentCloseEnterAnimation" format="reference" />
        <attr name="fragmentCloseExitAnimation" format="reference" />
        <attr name="fragmentFadeEnterAnimation" format="reference" />
        <attr name="fragmentFadeExitAnimation" format="reference" />
    </declare-styleable>

    <!-- Window animation class attributes. -->
    <declare-styleable name="WindowAnimation">
        <!-- The animation used when a window is being added. -->
        <attr name="windowEnterAnimation" format="reference" />
        <!-- The animation used when a window is being removed. -->
        <attr name="windowExitAnimation" format="reference" />
        <!-- The animation used when a window is going from INVISIBLE to VISIBLE. -->
        <attr name="windowShowAnimation" format="reference" />
        <!-- The animation used when a window is going from VISIBLE to INVISIBLE. -->
        <attr name="windowHideAnimation" format="reference" />

        <!--  When opening a new activity, this is the animation that is
              run on the next activity (which is entering the screen). -->
        <attr name="activityOpenEnterAnimation" format="reference" />
        <!--  When opening a new activity, this is the animation that is
              run on the previous activity (which is exiting the screen). -->
        <attr name="activityOpenExitAnimation" format="reference" />
        <!--  When closing the current activity, this is the animation that is
              run on the next activity (which is entering the screen). -->
        <attr name="activityCloseEnterAnimation" format="reference" />
        <!--  When closing the current activity, this is the animation that is
              run on the current activity (which is exiting the screen). -->
        <attr name="activityCloseExitAnimation" format="reference" />
        <!--  When opening an activity in a new task, this is the animation that is
              run on the activity of the new task (which is entering the screen). -->
        <attr name="taskOpenEnterAnimation" format="reference" />
        <!--  When opening an activity in a new task, this is the animation that is
              run on the activity of the old task (which is exiting the screen). -->
        <attr name="taskOpenExitAnimation" format="reference" />
        <!--  When opening an activity in a new task using Intent/FLAG_ACTIVITY_LAUNCH_BEHIND,
              this is the animation that is run on the activity of the new task (which is
              entering the screen and then leaving). -->
        <attr name="launchTaskBehindTargetAnimation" format="reference" />
        <!--  When opening an activity in a new task using Intent.FLAG_ACTIVITY_LAUNCH_BEHIND,
              this is the animation that is run on the activity of the old task (which is
              already on the screen and then stays on). -->
        <attr name="launchTaskBehindSourceAnimation" format="reference" />
        <!--  When closing the last activity of a task, this is the animation that is
              run on the activity of the next task (which is entering the screen). -->
        <attr name="taskCloseEnterAnimation" format="reference" />
        <!--  When opening an activity in a new task, this is the animation that is
              run on the activity of the old task (which is exiting the screen). -->
        <attr name="taskCloseExitAnimation" format="reference" />
        <!--  When bringing an existing task to the foreground, this is the
              animation that is run on the top activity of the task being brought
              to the foreground (which is entering the screen). -->
        <attr name="taskToFrontEnterAnimation" format="reference" />
        <!--  When bringing an existing task to the foreground, this is the
              animation that is run on the current foreground activity
              (which is exiting the screen). -->
        <attr name="taskToFrontExitAnimation" format="reference" />
        <!--  When sending the current task to the background, this is the
              animation that is run on the top activity of the task behind
              it (which is entering the screen). -->
        <attr name="taskToBackEnterAnimation" format="reference" />
        <!--  When sending the current task to the background, this is the
              animation that is run on the top activity of the current task
              (which is exiting the screen). -->
        <attr name="taskToBackExitAnimation" format="reference" />

        <!--  When opening a new activity that shows the wallpaper, while
              currently not showing the wallpaper, this is the animation that
              is run on the new wallpaper activity (which is entering the screen). -->
        <attr name="wallpaperOpenEnterAnimation" format="reference" />
        <!--  When opening a new activity that shows the wallpaper, while
              currently not showing the wallpaper, this is the animation that
              is run on the current activity (which is exiting the screen). -->
        <attr name="wallpaperOpenExitAnimation" format="reference" />
        <!--  When opening a new activity that hides the wallpaper, while
              currently showing the wallpaper, this is the animation that
              is run on the new activity (which is entering the screen). -->
        <attr name="wallpaperCloseEnterAnimation" format="reference" />
        <!--  When opening a new activity that hides the wallpaper, while
              currently showing the wallpaper, this is the animation that
              is run on the old wallpaper activity (which is exiting the screen). -->
        <attr name="wallpaperCloseExitAnimation" format="reference" />

        <!--  When opening a new activity that is on top of the wallpaper
              when the current activity is also on top of the wallpaper,
              this is the animation that is run on the new activity
              (which is entering the screen).  The wallpaper remains
              static behind the animation. -->
        <attr name="wallpaperIntraOpenEnterAnimation" format="reference" />
        <!--  When opening a new activity that is on top of the wallpaper
              when the current activity is also on top of the wallpaper,
              this is the animation that is run on the current activity
              (which is exiting the screen).  The wallpaper remains
              static behind the animation. -->
        <attr name="wallpaperIntraOpenExitAnimation" format="reference" />
        <!--  When closing a foreround activity that is on top of the wallpaper
              when the previous activity is also on top of the wallpaper,
              this is the animation that is run on the previous activity
              (which is entering the screen).  The wallpaper remains
              static behind the animation. -->
        <attr name="wallpaperIntraCloseEnterAnimation" format="reference" />
        <!--  When closing a foreround activity that is on top of the wallpaper
              when the previous activity is also on top of the wallpaper,
              this is the animation that is run on the current activity
              (which is exiting the screen).  The wallpaper remains
              static behind the animation. -->
        <attr name="wallpaperIntraCloseExitAnimation" format="reference" />

        <!--  When opening a new activity from a RemoteViews, this is the
              animation that is run on the next activity (which is entering the
              screen). Requires config_overrideRemoteViewsActivityTransition to
              be true. -->
        <attr name="activityOpenRemoteViewsEnterAnimation" format="reference" />

    </declare-styleable>

    <!-- ============================= -->
    <!-- View package class attributes -->
    <!-- ============================= -->
    <eat-comment />

    <!-- Attributes that can be used with {@link android.view.View} or
         any of its subclasses.  Also see {@link #ViewGroup_Layout} for
         attributes that are processed by the view's parent. -->
    <declare-styleable name="View">
        <!-- Supply an identifier name for this view, to later retrieve it
             with {@link android.view.View#findViewById View.findViewById()} or
             {@link android.app.Activity#findViewById Activity.findViewById()}.
             This must be a
             resource reference; typically you set this using the
             <code>@+</code> syntax to create a new ID resources.
             For example: <code>android:id="@+id/my_id"</code> which
             allows you to later retrieve the view
             with <code>findViewById(R.id.my_id)</code>. -->
        <attr name="id" format="reference" />

        <!-- Supply a tag for this view containing a String, to be retrieved
             later with {@link android.view.View#getTag View.getTag()} or
             searched for with {@link android.view.View#findViewWithTag
             View.findViewWithTag()}.  It is generally preferable to use
             IDs (through the android:id attribute) instead of tags because
             they are faster and allow for compile-time type checking. -->
        <attr name="tag" format="string" />

        <!-- The initial horizontal scroll offset, in pixels.-->
        <attr name="scrollX" format="dimension" />

        <!-- The initial vertical scroll offset, in pixels. -->
        <attr name="scrollY" format="dimension" />

        <!-- A drawable to use as the background.  This can be either a reference
             to a full drawable resource (such as a PNG image, 9-patch,
             XML state list description, etc), or a solid color such as "#ff000000"
            (black). -->
        <attr name="background" format="reference|color" />

        <!-- Sets the padding, in pixels, of all four edges. Padding is defined as
             space between the edges of the view and the view's content. This value will take
             precedence over any of the edge-specific values (paddingLeft, paddingTop,
             paddingRight, paddingBottom, paddingHorizontal and paddingVertical), but will
             not override paddingStart or paddingEnd, if set. A view's size
             will include its padding. If a {@link android.R.attr#background}
             is provided, the padding will initially be set to that (0 if the
             drawable does not have padding). Explicitly setting a padding value
             will override the corresponding padding found in the background. -->
        <attr name="padding" format="dimension" />
        <!-- Sets the padding, in pixels, of the left and right edges; see
             {@link android.R.attr#padding}. This value will take precedence over
             paddingLeft and paddingRight, but not paddingStart or paddingEnd (if set). -->
        <attr name="paddingHorizontal" format="dimension" />
        <!-- Sets the padding, in pixels, of the top and bottom edges; see
             {@link android.R.attr#padding}. This value will take precedence over
             paddingTop and paddingBottom, if set. -->
        <attr name="paddingVertical" format="dimension" />
        <!-- Sets the padding, in pixels, of the left edge; see {@link android.R.attr#padding}. -->
        <attr name="paddingLeft" format="dimension" />
        <!-- Sets the padding, in pixels, of the top edge; see {@link android.R.attr#padding}. -->
        <attr name="paddingTop" format="dimension" />
        <!-- Sets the padding, in pixels, of the right edge; see {@link android.R.attr#padding}. -->
        <attr name="paddingRight" format="dimension" />
        <!-- Sets the padding, in pixels, of the bottom edge; see {@link android.R.attr#padding}. -->
        <attr name="paddingBottom" format="dimension" />
        <!-- Sets the padding, in pixels, of the start edge; see {@link android.R.attr#padding}. -->
        <attr name="paddingStart" format="dimension" />
        <!-- Sets the padding, in pixels, of the end edge; see {@link android.R.attr#padding}. -->
        <attr name="paddingEnd" format="dimension" />

        <!-- Controls whether a view can take focus.  By default, this is "auto" which lets the
             framework determine whether a user can move focus to a view.  By setting this attribute
             to true the view is allowed to take focus. By setting it to "false" the view will not
             take focus. This value does not impact the behavior of
             directly calling {@link android.view.View#requestFocus}, which will
             always request focus regardless of this view.  It only impacts where
             focus navigation will try to move focus. -->
        <attr name="focusable" format="boolean|enum">
            <enum name="auto" value="0x00000010" />
        </attr>

        <attr name="__removed3" />

        <!-- Describes the content of a view so that a autofill service can fill in the appropriate
             data. Multiple hints can be combined in a comma separated list or an array of strings
             to mean e.g. emailAddress or postalAddress. -->
        <attr name="autofillHints" format="string|reference" />

        <!-- Hints the Android System whether the view node associated with this View should be
             included in a view structure used for autofill purposes. -->
        <attr name="importantForAutofill">
            <!-- Let the Android System use its heuristics to determine if the view is important for autofill. -->
            <flag name="auto" value="0" />
            <!-- Hint the Android System that this view is important for autofill,
                  and its children (if any) will be traversed.. -->
            <flag name="yes" value="0x1" />
            <!-- Hint the Android System that this view is *not* important for autofill,
                  but its children (if any) will be traversed.. -->
            <flag name="no" value="0x2" />
            <!-- Hint the Android System that this view is important for autofill,
                 but its children (if any) will not be traversed. -->
            <flag name="yesExcludeDescendants" value="0x4" />
            <!-- Hint the Android System that this view is *not* important for autofill,
                 and its children (if any) will not be traversed. -->
            <flag name="noExcludeDescendants" value="0x8" />
        </attr>

        <!-- Boolean that controls whether a view can take focus while in touch mode.
             If this is true for a view, that view can gain focus when clicked on, and can keep
             focus if another view is clicked on that doesn't have this attribute set to true. -->
        <attr name="focusableInTouchMode" format="boolean" />

        <!-- Controls the initial visibility of the view.  -->
        <attr name="visibility">
            <!-- Visible on screen; the default value. -->
            <enum name="visible" value="0" />
            <!-- Not displayed, but taken into account during layout (space is left for it). -->
            <enum name="invisible" value="1" />
            <!-- Completely hidden, as if the view had not been added. -->
            <enum name="gone" value="2" />
        </attr>

        <!-- Boolean internal attribute to adjust view layout based on
             system windows such as the status bar.
             If true, adjusts the padding of this view to leave space for the system windows.
             Will only take effect if this view is in a non-embedded activity. -->
        <attr name="fitsSystemWindows" format="boolean" />

        <!-- Defines which scrollbars should be displayed on scrolling or not. -->
        <attr name="scrollbars">
            <!-- No scrollbar is displayed. -->
            <flag name="none" value="0x00000000" />
            <!-- Displays horizontal scrollbar only. -->
            <flag name="horizontal" value="0x00000100" />
            <!-- Displays vertical scrollbar only. -->
            <flag name="vertical" value="0x00000200" />
        </attr>

        <!-- Controls the scrollbar style and position. The scrollbars can be overlaid or
             inset. When inset, they add to the padding of the view. And the
             scrollbars can be drawn inside the padding area or on the edge of
             the view. For example, if a view has a background drawable and you
             want to draw the scrollbars inside the padding specified by the
             drawable, you can use insideOverlay or insideInset. If you want them
             to appear at the edge of the view, ignoring the padding, then you can
             use outsideOverlay or outsideInset.-->
        <attr name="scrollbarStyle">
            <!-- Inside the padding and overlaid. -->
            <enum name="insideOverlay" value="0x0" />
            <!-- Inside the padding and inset. -->
            <enum name="insideInset" value="0x01000000" />
            <!-- Edge of the view and overlaid. -->
            <enum name="outsideOverlay" value="0x02000000" />
            <!-- Edge of the view and inset. -->
            <enum name="outsideInset" value="0x03000000" />
        </attr>

        <!-- Set this if the view will serve as a scrolling container, meaning
             that it can be resized to shrink its overall window so that there
             will be space for an input method.  If not set, the default
             value will be true if "scrollbars" has the vertical scrollbar
             set, else it will be false. -->
        <attr name="isScrollContainer" format="boolean" />

          <!-- Defines whether to fade out scrollbars when they are not in use. -->
         <attr name="fadeScrollbars" format="boolean" />
         <!-- Defines the delay in milliseconds that a scrollbar takes to fade out. -->
         <attr name="scrollbarFadeDuration" format="integer" />
         <!-- Defines the delay in milliseconds that a scrollbar waits before fade out. -->
        <attr name="scrollbarDefaultDelayBeforeFade" format="integer" />
        <!-- Sets the width of vertical scrollbars and height of horizontal scrollbars. -->
        <attr name="scrollbarSize" format="dimension" />
        <!-- Defines the horizontal scrollbar thumb drawable. -->
        <attr name="scrollbarThumbHorizontal" format="reference" />
        <!-- Defines the vertical scrollbar thumb drawable. -->
        <attr name="scrollbarThumbVertical" format="reference" />
        <!-- Defines the horizontal scrollbar track drawable. -->
        <attr name="scrollbarTrackHorizontal" format="reference" />
        <!-- Defines the vertical scrollbar track drawable. -->
        <attr name="scrollbarTrackVertical" format="reference" />
        <!-- Defines whether the horizontal scrollbar track should always be drawn. -->
        <attr name="scrollbarAlwaysDrawHorizontalTrack" format="boolean" />
        <!-- Defines whether the vertical scrollbar track should always be drawn. -->
        <attr name="scrollbarAlwaysDrawVerticalTrack" format="boolean" />

        <!-- This attribute is ignored in API level 14
             ({@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}) and higher.
             Using fading edges may introduce noticeable performance
             degradations and should be used only when required by the application's
             visual design. To request fading edges with API level 14 and above,
             use the <code>android:requiresFadingEdge</code> attribute instead. -->
        <attr name="fadingEdge">
            <!-- No edge is faded. -->
            <flag name="none" value="0x00000000" />
            <!-- Fades horizontal edges only. -->
            <flag name="horizontal" value="0x00001000" />
            <!-- Fades vertical edges only. -->
            <flag name="vertical" value="0x00002000" />
        </attr>
        <!-- Defines which edges should be faded on scrolling. -->
        <attr name="requiresFadingEdge">
            <!-- No edge is faded. -->
            <flag name="none" value="0x00000000" />
            <!-- Fades horizontal edges only. -->
            <flag name="horizontal" value="0x00001000" />
            <!-- Fades vertical edges only. -->
            <flag name="vertical" value="0x00002000" />
        </attr>
        <!-- Defines the length of the fading edges. -->
        <attr name="fadingEdgeLength" format="dimension" />

        <!-- Defines the next view to give focus to when the next focus is
             {@link android.view.View#FOCUS_LEFT}.

             If the reference refers to a view that does not exist or is part
             of a hierarchy that is invisible, a {@link java.lang.RuntimeException}
             will result when the reference is accessed.-->
        <attr name="nextFocusLeft" format="reference"/>

        <!-- Defines the next view to give focus to when the next focus is
             {@link android.view.View#FOCUS_RIGHT}

             If the reference refers to a view that does not exist or is part
             of a hierarchy that is invisible, a {@link java.lang.RuntimeException}
             will result when the reference is accessed.-->
        <attr name="nextFocusRight" format="reference"/>

        <!-- Defines the next view to give focus to when the next focus is
             {@link android.view.View#FOCUS_UP}

             If the reference refers to a view that does not exist or is part
             of a hierarchy that is invisible, a {@link java.lang.RuntimeException}
             will result when the reference is accessed.-->
        <attr name="nextFocusUp" format="reference"/>

        <!-- Defines the next view to give focus to when the next focus is
             {@link android.view.View#FOCUS_DOWN}

             If the reference refers to a view that does not exist or is part
             of a hierarchy that is invisible, a {@link java.lang.RuntimeException}
             will result when the reference is accessed.-->
        <attr name="nextFocusDown" format="reference"/>

        <!-- Defines the next view to give focus to when the next focus is
             {@link android.view.View#FOCUS_FORWARD}

             If the reference refers to a view that does not exist or is part
             of a hierarchy that is invisible, a {@link java.lang.RuntimeException}
             will result when the reference is accessed.-->
        <attr name="nextFocusForward" format="reference"/>

        <!-- Defines whether this view reacts to click events. -->
        <attr name="clickable" format="boolean" />

        <!-- Defines whether this view reacts to long click events. -->
        <attr name="longClickable" format="boolean" />

        <!--  Defines whether this view reacts to context click events. -->
        <attr name="contextClickable" format="boolean" />

        <!-- If false, no state will be saved for this view when it is being
             frozen. The default is true, allowing the view to be saved
             (however it also must have an ID assigned to it for its
             state to be saved).  Setting this to false only disables the
             state for this view, not for its children which may still
             be saved. -->
        <attr name="saveEnabled" format="boolean" />

        <!-- Specifies whether to filter touches when the view's window is obscured by
             another visible window.  When set to true, the view will not receive touches
             whenever a toast, dialog or other window appears above the view's window.
             Refer to the {@link android.view.View} security documentation for more details. -->
        <attr name="filterTouchesWhenObscured" format="boolean" />

        <!-- Defines the quality of translucent drawing caches. This property is used
             only when the drawing cache is enabled and translucent. The default value is auto. -->
        <attr name="drawingCacheQuality">
            <!-- Lets the framework decide what quality level should be used
                 for the drawing cache. -->
            <enum name="auto" value="0" />
            <!-- Low quality. When set to low quality, the drawing cache uses a lower color
                 depth, thus losing precision in rendering gradients, but uses less memory. -->
            <enum name="low" value="1" />
            <!-- High quality. When set to high quality, the drawing cache uses a higher
                 color depth but uses more memory. -->
            <enum name="high" value="2" />
        </attr>

        <!-- Controls whether the view's window should keep the screen on
             while visible. -->
        <attr name="keepScreenOn" format="boolean" />

        <!-- When this attribute is set to true, the view gets its drawable state
             (focused, pressed, etc.) from its direct parent rather than from itself. -->
        <attr name="duplicateParentState" format="boolean" />

        <!-- Defines the minimum height of the view. It is not guaranteed
             the view will be able to achieve this minimum height (for example,
             if its parent layout constrains it with less available height). -->
        <attr name="minHeight" />

        <!-- Defines the minimum width of the view. It is not guaranteed
             the view will be able to achieve this minimum width (for example,
             if its parent layout constrains it with less available width). -->
        <attr name="minWidth" />

        <!-- Boolean that controls whether a view should have sound effects
             enabled for events such as clicking and touching. -->
        <attr name="soundEffectsEnabled" format="boolean" />

        <!-- Boolean that controls whether a view should have haptic feedback
             enabled for events such as long presses. -->
        <attr name="hapticFeedbackEnabled" format="boolean" />

        <!-- Defines text that briefly describes content of the view. This property is used
             primarily for accessibility. Since some views do not have textual
             representation this attribute can be used for providing such. -->
        <attr name="contentDescription" format="string" localization="suggested" />

        <!-- Sets the id of a view before which this one is visited in accessibility traversal.
             A screen-reader must visit the content of this view before the content of the one
             it precedes.
             {@see android.view.View#setAccessibilityTraversalBefore(int)} -->
        <attr name="accessibilityTraversalBefore" format="integer" />

        <!-- Sets the id of a view after which this one is visited in accessibility traversal.
             A screen-reader must visit the content of the other view before the content of
             this one.
             {@see android.view.View#setAccessibilityTraversalAfter(int)} -->
        <attr name="accessibilityTraversalAfter" format="integer" />

        <!-- Name of the method in this View's context to invoke when the view is
             clicked. This name must correspond to a public method that takes
             exactly one parameter of type View. For instance, if you specify
             <code>android:onClick="sayHello"</code>, you must declare a
             <code>public void sayHello(View v)</code> method of your context
             (typically, your Activity). -->
        <attr name="onClick" format="string" />

        <!-- Defines over-scrolling behavior. This property is used only if the
             View is scrollable. Over-scrolling is the ability for the user to
             receive feedback when attempting to scroll beyond meaningful content. -->
        <attr name="overScrollMode">
            <!-- Always show over-scroll effects, even if the content fits entirely
                 within the available space. -->
            <enum name="always" value="0" />
            <!-- Only show over-scroll effects if the content is large
                 enough to meaningfully scroll. -->
            <enum name="ifContentScrolls" value="1" />
            <!-- Never show over-scroll effects. -->
            <enum name="never" value="2" />
        </attr>

        <!-- alpha property of the view, as a value between 0 (completely transparent) and 1
             (completely opaque). -->
        <attr name="alpha" format="float" />

        <!-- base z depth of the view. -->
        <attr name="elevation" format="dimension" />

        <!-- translation in x of the view. This value is added post-layout to the left
             property of the view, which is set by its layout. -->
        <attr name="translationX" format="dimension" />

        <!-- translation in y of the view. This value is added post-layout to the top
             property of the view, which is set by its layout. -->
        <attr name="translationY" format="dimension" />

        <!-- translation in z of the view. This value is added to its elevation. -->
        <attr name="translationZ" format="dimension" />

        <!-- x location of the pivot point around which the view will rotate and scale.
             This xml attribute sets the pivotX property of the View. -->
        <attr name="transformPivotX" format="dimension" />

        <!-- y location of the pivot point around which the view will rotate and scale.
             This xml attribute sets the pivotY property of the View. -->
        <attr name="transformPivotY" format="dimension" />

        <!-- rotation of the view, in degrees. -->
        <attr name="rotation" format="float" />

        <!-- rotation of the view around the x axis, in degrees. -->
        <attr name="rotationX" format="float" />

        <!-- rotation of the view around the y axis, in degrees. -->
        <attr name="rotationY" format="float" />

        <!-- scale of the view in the x direction. -->
        <attr name="scaleX" format="float" />

        <!-- scale of the view in the y direction. -->
        <attr name="scaleY" format="float" />

        <!-- Determines which side the vertical scroll bar should be placed on. -->
        <attr name="verticalScrollbarPosition">
            <!-- Place the scroll bar wherever the system default determines. -->
            <enum name="defaultPosition" value="0" />
            <!-- Place the scroll bar on the left. -->
            <enum name="left" value="1" />
            <!-- Place the scroll bar on the right. -->
            <enum name="right" value="2" />
        </attr>

        <!-- Specifies the type of layer backing this view. The default value is none.
             Refer to {@link android.view.View#setLayerType(int, android.graphics.Paint)}
             for more information.-->
        <attr name="layerType">
            <!-- Don't use a layer. -->
            <enum name="none" value="0" />
            <!-- Use a software layer. Refer to
                 {@link android.view.View#setLayerType(int, android.graphics.Paint)} for
                 more information. -->
            <enum name="software" value="1" />
            <!-- Use a hardware layer. Refer to
                 {@link android.view.View#setLayerType(int, android.graphics.Paint)} for
                 more information. -->
            <enum name="hardware" value="2" />
        </attr>

        <!-- Defines the direction of layout drawing. This typically is associated with writing
             direction of the language script used. The possible values are "ltr" for Left-to-Right,
             "rtl" for Right-to-Left, "locale", and "inherit" from parent view. If there is nothing
             to inherit, "locale" is used. "locale" falls back to "en-US". "ltr" is the direction
             used in "en-US". The default for this attribute is "inherit". -->
        <attr name="layoutDirection">
            <!-- Left-to-Right. -->
            <enum name="ltr" value="0" />
            <!-- Right-to-Left. -->
            <enum name="rtl" value="1" />
            <!-- Inherit from parent. -->
            <enum name="inherit" value="2" />
            <!-- Locale. -->
            <enum name="locale" value="3" />
        </attr>

        <!-- Defines the direction of the text. -->
         <attr name="textDirection" format="integer">
            <!-- Default. -->
            <enum name="inherit" value="0" />
            <!-- Default for the root view. The first strong directional character determines the
                 paragraph direction.  If there is no strong directional character, the paragraph
                 direction is the view’s resolved layout direction. -->
            <enum name="firstStrong" value="1" />
            <!-- The paragraph direction is RTL if it contains any strong RTL character, otherwise
                 it is LTR if it contains any strong LTR characters.  If there are neither, the
                 paragraph direction is the view’s resolved layout direction. -->
            <enum name="anyRtl" value="2" />
            <!-- The paragraph direction is left to right. -->
            <enum name="ltr" value="3" />
            <!-- The paragraph direction is right to left. -->
            <enum name="rtl" value="4" />
            <!-- The paragraph direction is coming from the system Locale. -->
            <enum name="locale" value="5" />
            <!-- The first strong directional character determines the paragraph direction. If
                 there is no strong directional character, the paragraph direction is LTR. -->
            <enum name="firstStrongLtr" value="6" />
            <!-- The first strong directional character determines the paragraph direction. If
                 there is no strong directional character, the paragraph direction is RTL. -->
            <enum name="firstStrongRtl" value="7" />
        </attr>

        <!-- Defines the alignment of the text. -->
        <attr name="textAlignment" format="integer">
            <!-- Default. -->
            <enum name="inherit" value="0" />
            <!-- Default for the root view. The gravity determines the alignment, ALIGN_NORMAL,
                ALIGN_CENTER, or ALIGN_OPPOSITE, which are relative to each paragraph’s
                text direction. -->
            <enum name="gravity" value="1" />
            <!-- Align to the start of the paragraph, for example: ALIGN_NORMAL. -->
            <enum name="textStart" value="2" />
            <!-- Align to the end of the paragraph, for example: ALIGN_OPPOSITE. -->
            <enum name="textEnd" value="3" />
            <!-- Center the paragraph, for example: ALIGN_CENTER. -->
            <enum name="center" value="4" />
            <!-- Align to the start of the view, which is ALIGN_LEFT if the view’s resolved
                layoutDirection is LTR, and ALIGN_RIGHT otherwise. -->
            <enum name="viewStart" value="5" />
            <!-- Align to the end of the view, which is ALIGN_RIGHT if the view’s resolved
                layoutDirection is LTR, and ALIGN_LEFT otherwise. -->
            <enum name="viewEnd" value="6" />
        </attr>

        <!-- Describes whether or not this view is important for accessibility.
             If it is important, the view fires accessibility events and is
             reported to accessibility services that query the screen. Note:
             While not recommended, an accessibility service may decide to
             ignore this attribute and operate on all views in the view tree. -->
        <attr name="importantForAccessibility" format="integer">
            <!-- The system determines whether the view is important for accessibility - default
                 (recommended). -->
            <enum name="auto" value="0" />
            <!-- The view is important for accessibility. -->
            <enum name="yes" value="1" />
            <!-- The view is not important for accessibility. -->
            <enum name="no" value="2" />
            <!-- The view is not important for accessibility, nor are any of its descendant
                 views. -->
            <enum name="noHideDescendants" value="4" />
        </attr>

        <!-- Indicates to accessibility services whether the user should be notified when
             this view changes. -->
        <attr name="accessibilityLiveRegion" format="integer">
            <!-- Accessibility services should not announce changes to this view. -->
            <enum name="none" value="0" />
            <!-- Accessibility services should announce changes to this view. -->
            <enum name="polite" value="1" />
            <!-- Accessibility services should interrupt ongoing speech to immediately
                 announce changes to this view. -->
            <enum name="assertive" value="2" />
        </attr>

        <!-- Specifies the id of a view for which this view serves as a label for
             accessibility purposes. For example, a TextView before an EditText in
             the UI usually specifies what infomation is contained in the EditText.
             Hence, the TextView is a label for the EditText. -->
        <attr name="labelFor" format="reference" />

        <!-- Specifies a theme override for a view. When a theme override is set, the
             view will be inflated using a {@link android.content.Context} themed with
             the specified resource. During XML inflation, any child views under the
             view with a theme override will inherit the themed context. -->
        <attr name="theme" />

        <!-- Names a View such that it can be identified for Transitions. Names should be
             unique in the View hierarchy. -->
        <attr name="transitionName" format="string" />

        <!-- Specifies that this view should permit nested scrolling within a compatible
             ancestor view. -->
        <attr name="nestedScrollingEnabled" format="boolean" />

        <!-- Sets the state-based animator for the View. -->
        <attr name="stateListAnimator" format="reference"/>

        <!-- Tint to apply to the background. -->
        <attr name="backgroundTint" format="color" />

        <!-- Blending mode used to apply the background tint. -->
        <attr name="backgroundTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>

        <!-- ViewOutlineProvider used to determine the View's Outline. -->
        <attr name="outlineProvider">
            <!-- Default, background drawable-driven outline. -->
            <enum name="background" value="0" />
            <!-- No outline provider. -->
            <enum name="none" value="1" />
            <!-- Generates an opaque outline for the bounds of the view. -->
            <enum name="bounds" value="2" />
            <!-- Generates an opaque outline for the padded bounds of the view. -->
            <enum name="paddedBounds" value="3" />
        </attr>

        <!-- Defines the drawable to draw over the content. This can be used as an overlay.
             The foreground drawable participates in the padding of the content if the gravity
             is set to fill. -->
        <attr name="foreground" format="reference|color" />
        <!-- Defines the gravity to apply to the foreground drawable. The gravity defaults
             to fill. -->
        <attr name="foregroundGravity">
            <!-- 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" />
        </attr>
        <!-- Defines whether the foreground drawable should be drawn inside the padding.
             This property is turned on by default. -->
        <attr name="foregroundInsidePadding" format="boolean" />
        <!-- Tint to apply to the foreground. -->
        <attr name="foregroundTint" format="color" />
        <!-- Blending mode used to apply the foreground tint. -->
        <attr name="foregroundTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>

        <!-- Defines which scroll indicators should be displayed when the view
             can be scrolled. Multiple values may be combined using logical OR,
             for example "top|bottom". -->
        <attr name="scrollIndicators">
            <!-- No scroll indicators are displayed. -->
            <flag name="none" value="0x00" />
            <!-- Displays top scroll indicator when view can be scrolled up. -->
            <flag name="top" value="0x01" />
            <!-- Displays bottom scroll indicator when vew can be scrolled down. -->
            <flag name="bottom" value="0x02" />
            <!-- Displays left scroll indicator when vew can be scrolled left. -->
            <flag name="left" value="0x04" />
            <!-- Displays right scroll indicator when vew can be scrolled right. -->
            <flag name="right" value="0x08" />
            <!-- Displays right scroll indicator when vew can be scrolled in the
                 start direction. -->
            <flag name="start" value="0x10" />
            <!-- Displays right scroll indicator when vew can be scrolled in the
                 end direction. -->
            <flag name="end" value="0x20" />
        </attr>

        <attr name="pointerIcon">
            <!-- Null icon, pointer becomes invisible. -->
            <enum name="none" value="0" />
            <!-- The default icon of arrow pointer. -->
            <enum name="arrow" value="1000" />
            <!-- Pointer icon indicating context-menu will appear. -->
            <enum name="context_menu" value="1001" />
            <!-- Pointer icon of a hand with the index finger. -->
            <enum name="hand" value="1002" />
            <!-- Pointer icon indicating help. -->
            <enum name="help" value="1003" />
            <!-- Pointer icon indicating something is going on and waiting. -->
            <enum name="wait" value="1004" />
            <!-- Pointer icon for cell and grid. -->
            <enum name="cell" value="1006" />
            <!-- Pointer icon of crosshair, indicating to spot a location. -->
            <enum name="crosshair" value="1007" />
            <!-- Pointer icon of I-beam, usually for text. -->
            <enum name="text" value="1008" />
            <!-- Pointer icon of I-beam with 90-degree rotated, for vertical text. -->
            <enum name="vertical_text" value="1009" />
            <!-- Pointer icon of 'alias', indicating an alias of/shortcut to something is to be
                 created. -->
            <enum name="alias" value="1010" />
            <!-- Pointer icon of 'copy', used for drag/drop. -->
            <enum name="copy" value="1011" />
            <!-- Pointer icon of 'no-drop', indicating the drop will not be accepted at the
                 current location. -->
            <enum name="no_drop" value="1012" />
            <!-- Pointer icon of four-way arrows, indicating scrolling all direction. -->
            <enum name="all_scroll" value="1013" />
            <!-- Pointer icon of horizontal double arrow, indicating horizontal resize. -->
            <enum name="horizontal_double_arrow" value="1014" />
            <!-- Pointer icon of vertical double arrow, indicating vertical resize. -->
            <enum name="vertical_double_arrow" value="1015" />
            <!-- Pointer icon of diagonal double arrow, starting from top-right to bottom-left.
                 Indicating freeform resize. -->
            <enum name="top_right_diagonal_double_arrow" value="1016" />
            <!-- Pointer icon of diagonal double arrow, starting from top-left to bottom-right.
                 Indicating freeform resize. -->
            <enum name="top_left_diagonal_double_arrow" value="1017" />
            <!-- Pointer icon indicating zoom-in. -->
            <enum name="zoom_in" value="1018" />
            <!-- Pointer icon indicating zoom-out. -->
            <enum name="zoom_out" value="1019" />
            <!-- Pointer icon of a hand sign to grab something. -->
            <enum name="grab" value="1020" />
            <!-- Pointer icon of a hand sign while grabbing something. -->
            <enum name="grabbing" value="1021" />
        </attr>

        <!-- Whether this view has elements that may overlap when drawn. See
             {@link android.view.View#forceHasOverlappingRendering(boolean)}. -->
        <attr name="forceHasOverlappingRendering" format="boolean" />

        <!-- Defines text displayed in a small popup window on hover or long press. -->
        <attr name="tooltipText" format="string" localization="suggested" />

        <!-- Whether this view is a root of a keyboard navigation cluster.
             See {@link android.view.View#setKeyboardNavigationCluster(boolean)}. -->
        <attr name="keyboardNavigationCluster" format="boolean" />

        <attr name="__removed0" format="boolean" />

        <!-- Defines the next keyboard navigation cluster.

             If the reference refers to a view that does not exist or is part
             of a hierarchy that is invisible, a {@link java.lang.RuntimeException}
             will result when the reference is accessed.-->
        <attr name="nextClusterForward" format="reference"/>

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

        <!-- Whether this view is a default-focus view.
             Only one view per keyboard navigation cluster can have this attribute set to true.
             See {@link android.view.View#setFocusedByDefault(boolean)}. -->
        <attr name="focusedByDefault" format="boolean" />

        <!-- Whether this View should use a default focus highlight when it gets focused but
             doesn't have {@link android.R.attr#state_focused} defined in its background. -->
        <attr name="defaultFocusHighlightEnabled" format="boolean" />
    </declare-styleable>

    <!-- Attributes that can be assigned to a tag for a particular View. -->
    <declare-styleable name="ViewTag">
        <!-- Specifies the key identifying a tag. This must be a resource reference. -->
        <attr name="id" />
        <!-- Specifies the value with which to tag the view. -->
        <attr name="value" />
    </declare-styleable>

    <!-- Attributes that can be assigned to an &lt;include&gt; tag.
         @hide -->
    <declare-styleable name="Include">
        <attr name="id" />
        <attr name="visibility" />
    </declare-styleable>

    <!-- Attributes that can be used with a {@link android.view.ViewGroup} or any
         of its subclasses.  Also see {@link #ViewGroup_Layout} for
         attributes that this class processes in its children. -->
    <declare-styleable name="ViewGroup">
        <!-- Defines whether changes in layout (caused by adding and removing items) should
             cause a LayoutTransition to run. When this flag is set to true, a default
             LayoutTransition object will be set on the ViewGroup container and default
             animations will run when these layout changes occur.-->
        <attr name="animateLayoutChanges" format="boolean" />
        <!-- Defines whether a child is limited to draw inside of its bounds or not.
             This is useful with animations that scale the size of the children to more
             than 100% for instance. In such a case, this property should be set to false
             to allow the children to draw outside of their bounds. The default value of
             this property is true. -->
        <attr name="clipChildren" format="boolean" />
        <!-- Defines whether the ViewGroup will clip its children and resize (but not clip) any
             EdgeEffect to its padding, if padding is not zero. This property is set to true by
             default. -->
        <attr name="clipToPadding" format="boolean" />
        <!-- Defines the layout animation to use the first time the ViewGroup is laid out.
             Layout animations can also be started manually after the first layout. -->
        <attr name="layoutAnimation" format="reference" />
        <!-- Defines whether layout animations should create a drawing cache for their
             children. Enabling the animation cache consumes more memory and requires
             a longer initialization but provides better performance. The animation
             cache is enabled by default. -->
        <attr name="animationCache" format="boolean" />
        <!-- Defines the persistence of the drawing cache. The drawing cache might be
             enabled by a ViewGroup for all its children in specific situations (for
             instance during a scrolling.) This property lets you persist the cache
             in memory after its initial usage. Persisting the cache consumes more
             memory but may prevent frequent garbage collection is the cache is created
             over and over again. By default the persistence is set to scrolling. -->
        <attr name="persistentDrawingCache">
            <!-- The drawing cache is not persisted after use. -->
            <flag name="none" value="0x0" />
            <!-- The drawing cache is persisted after a layout animation. -->
            <flag name="animation" value="0x1" />
            <!-- The drawing cache is persisted after a scroll. -->
            <flag name="scrolling" value="0x2" />
            <!-- The drawing cache is always persisted. -->
            <flag name="all" value="0x3" />
        </attr>
        <!-- Defines whether the ViewGroup should always draw its children using their
             drawing cache or not. The default value is true. -->
        <attr name="alwaysDrawnWithCache" format="boolean" />
        <!-- Sets whether this ViewGroup's drawable states also include
             its children's drawable states.  This is used, for example, to
             make a group appear to be focused when its child EditText or button
             is focused. -->
        <attr name="addStatesFromChildren" format="boolean" />

        <!-- Defines the relationship between the ViewGroup and its descendants
             when looking for a View to take focus. -->
        <attr name="descendantFocusability">
            <!-- The ViewGroup will get focus before any of its descendants. -->
            <enum name="beforeDescendants" value="0" />
            <!-- The ViewGroup will get focus only if none of its descendants want it. -->
            <enum name="afterDescendants" value="1" />
            <!-- The ViewGroup will block its descendants from receiving focus. -->
            <enum name="blocksDescendants" value="2" />
        </attr>

        <!-- Set to true if this ViewGroup blocks focus in the presence of a touchscreen. -->
        <attr name="touchscreenBlocksFocus" format="boolean" />

        <!-- Sets whether this ViewGroup should split MotionEvents
             to separate child views during touch event dispatch.
             If false (default), touch events will be dispatched to
             the child view where the first pointer went down until
             the last pointer goes up.
             If true, touch events may be dispatched to multiple children.
             MotionEvents for each pointer will be dispatched to the child
             view where the initial ACTION_DOWN event happened.
             See {@link android.view.ViewGroup#setMotionEventSplittingEnabled(boolean)}
             for more information. -->
        <attr name="splitMotionEvents" format="boolean" />

        <!-- Defines the layout mode of this ViewGroup. -->
        <attr name="layoutMode">
            <!-- Use the children's clip bounds when laying out this container. -->
            <enum name="clipBounds" value="0" />
            <!-- Use the children's optical bounds when laying out this container. -->
            <enum name="opticalBounds" value="1" />
        </attr>

        <!-- Sets whether or not this ViewGroup should be treated as a single entity
             when doing an Activity transition. Typically, the elements inside a
             ViewGroup are each transitioned from the scene individually. The default
             for a ViewGroup is false unless it has a background. See
             {@link android.app.ActivityOptions#makeSceneTransitionAnimation(android.app.Activity,
             android.view.View, String)} for more information. Corresponds to
             {@link android.view.ViewGroup#setTransitionGroup(boolean)}.-->
        <attr name="transitionGroup" format="boolean" />
    </declare-styleable>

    <!-- A {@link android.view.ViewStub} lets you lazily include other XML layouts
         inside your application at runtime. -->
    <declare-styleable name="ViewStub">
        <!-- Supply an identifier name for this view. -->
        <attr name="id" />
        <!-- Supply an identifier for the layout resource to inflate when the ViewStub
             becomes visible or when forced to do so. The layout resource must be a
             valid reference to a layout. -->
        <attr name="layout" format="reference" />
        <!-- Overrides the id of the inflated View with this value. -->
        <attr name="inflatedId" format="reference" />
    </declare-styleable>

    <!-- ===================================== -->
    <!-- View package parent layout attributes -->
    <!-- ===================================== -->
    <eat-comment />

    <!-- This is the basic set of layout attributes that are common to all
         layout managers.  These attributes are specified with the rest of
         a view's normal attributes (such as {@link android.R.attr#background},
         but will be parsed by the view's parent and ignored by the child.
        <p>The values defined here correspond to the base layout attribute
        class {@link android.view.ViewGroup.LayoutParams}. -->
    <declare-styleable name="ViewGroup_Layout">
        <!-- Specifies the basic width of the view.  This is a required attribute
             for any view inside of a containing layout manager.  Its value may
             be a dimension (such as "12dip") for a constant width or one of
             the special constants. -->
        <attr name="layout_width" format="dimension">
            <!-- The view should be as big as its parent (minus padding).
                 This constant is deprecated starting from API Level 8 and
                 is replaced by {@code match_parent}. -->
            <enum name="fill_parent" value="-1" />
            <!-- The view should be as big as its parent (minus padding).
                 Introduced in API Level 8. -->
            <enum name="match_parent" value="-1" />
            <!-- The view should be only big enough to enclose its content (plus padding). -->
            <enum name="wrap_content" value="-2" />
        </attr>

        <!-- Specifies the basic height of the view.  This is a required attribute
             for any view inside of a containing layout manager.  Its value may
             be a dimension (such as "12dip") for a constant height or one of
             the special constants. -->
        <attr name="layout_height" format="dimension">
            <!-- The view should be as big as its parent (minus padding).
                 This constant is deprecated starting from API Level 8 and
                 is replaced by {@code match_parent}. -->
            <enum name="fill_parent" value="-1" />
            <!-- The view should be as big as its parent (minus padding).
                 Introduced in API Level 8. -->
            <enum name="match_parent" value="-1" />
            <!-- The view should be only big enough to enclose its content (plus padding). -->
            <enum name="wrap_content" value="-2" />
        </attr>
    </declare-styleable>

    <!-- This is the basic set of layout attributes for layout managers that
         wish to place margins around their child views.
         These attributes are specified with the rest of
         a view's normal attributes (such as {@link android.R.attr#background},
         but will be parsed by the view's parent and ignored by the child.
        <p>The values defined here correspond to the base layout attribute
        class {@link android.view.ViewGroup.MarginLayoutParams}. -->
    <declare-styleable name="ViewGroup_MarginLayout">
        <attr name="layout_width" />
        <attr name="layout_height" />
        <!--  Specifies extra space on the left, top, right and bottom
              sides of this view.  If both layout_margin and any of layout_marginLeft,
              layout_marginRight, layout_marginStart, layout_marginEnd,
              layout_marginTop, and layout_marginBottom are
              also specified, the layout_margin value will take precedence over the
              edge-specific values. This space is outside this view's bounds.
              Margin values should be positive. -->
        <attr name="layout_margin" format="dimension"  />
        <!--  Specifies extra space on the left side of this view.
              This space is outside this view's bounds.
              Margin values should be positive. -->
        <attr name="layout_marginLeft" format="dimension"  />
        <!--  Specifies extra space on the top side of this view.
              This space is outside this view's bounds.
              Margin values should be positive.-->
        <attr name="layout_marginTop" format="dimension" />
        <!--  Specifies extra space on the right side of this view.
              This space is outside this view's bounds.
              Margin values should be positive.-->
        <attr name="layout_marginRight" format="dimension"  />
        <!--  Specifies extra space on the bottom side of this view.
              This space is outside this view's bounds.
              Margin values should be positive.-->
        <attr name="layout_marginBottom" format="dimension"  />
        <!--  Specifies extra space on the start side of this view.
              This space is outside this view's bounds.
              Margin values should be positive.-->
        <attr name="layout_marginStart" format="dimension"  />
        <!--  Specifies extra space on the end side of this view.
              This space is outside this view's bounds.
              Margin values should be positive.-->
        <attr name="layout_marginEnd" format="dimension"  />
        <!--  Specifies extra space on the left and right sides of this view.
              Specifying layout_marginHorizontal is equivalent to specifying
              layout_marginLeft and layout_marginRight.
              If both layout_marginHorizontal and either/both of layout_marginLeft
              and layout_marginRight are also specified, the layout_marginHorizontal
              value will take precedence over the
              edge-specific values. Also, layout_margin will always take precedence over
              any of these values, including layout_marginHorizontal.
              This space is outside this view's bounds.
              Margin values should be positive.-->
        <attr name="layout_marginHorizontal" format="dimension"  />
        <!--  Specifies extra space on the top and bottom sides of this view.
              Specifying layout_marginVertical is equivalent to specifying
              layout_marginTop and layout_marginBottom with that same value.
              If both layout_marginVertical and either/both of layout_marginTop and
              layout_marginBottom are also specified, the layout_marginVertical value
              will take precedence over the edge-specific values.
              Also, layout_margin will always take precedence over
              any of these values, including layout_marginVertical.
              This space is outside this view's bounds.
              Margin values should be positive.-->
        <attr name="layout_marginVertical" format="dimension"  />
    </declare-styleable>

    <!-- Use <code>input-method</code> as the root tag of the XML resource that
         describes an
         {@link android.view.inputmethod.InputMethod} service, which is
         referenced from its
         {@link android.view.inputmethod.InputMethod#SERVICE_META_DATA}
         meta-data entry.  Described here are the attributes that can be
         included in that tag. -->
    <declare-styleable name="InputMethod">
        <!-- Component name of an activity that allows the user to modify
             the settings for this service. -->
        <attr name="settingsActivity" format="string" />
        <!-- Set to true in all of the configurations for which this input
             method should be considered an option as the default. -->
        <attr name="isDefault" format="boolean" />
        <!-- Set to true if this input method supports ways to switch to
             a next input method (for example, a globe key.). When this is true and
             InputMethodManager#shouldOfferSwitchingToNextInputMethod() returns true,
             the IME has to offer ways to invoke InputMethodManager#switchToNextInputMethod()
             accordingly.
             <p> Note that the system determines the most appropriate next input method
             and subtype in order to provide the consistent user experience in switching
             between IMEs and subtypes. -->
        <attr name="supportsSwitchingToNextInputMethod" format="boolean" />
        <attr name="__removed2" format="boolean" />
    </declare-styleable>

    <!-- This is the subtype of InputMethod. Subtype can describe locales (for example, en_US and
         fr_FR) and modes (for example, voice and keyboard), and is used for IME switch. This
         subtype allows the system to call the specified subtype of the IME directly. -->
    <declare-styleable name="InputMethod_Subtype">
        <!-- The name of the subtype. -->
        <attr name="label" />
        <!-- The icon of the subtype. -->
        <attr name="icon" />
        <!-- The locale of the subtype. This string should be a locale (for example en_US and fr_FR)
             and will be passed to the IME when the framework calls the IME
             with the subtype. This is also used by the framework to know the supported locales
             of the IME.  -->
        <attr name="imeSubtypeLocale" format="string" />
        <!-- The mode of the subtype. This string can be a mode (for example, voice and keyboard)
             and this string will be passed to the IME when the framework calls the IME with the
             subtype.  {@link android.view.inputmethod.InputMethodSubtype#getLocale()} returns the
             value specified in this attribute.  -->
        <attr name="imeSubtypeMode" format="string" />
        <!-- Set true if the subtype is auxiliary.  An auxiliary subtype won't be shown in the
             input method selection list in the settings app.
             InputMethodManager#switchToLastInputMethod will ignore auxiliary subtypes when it
             chooses a target subtype. -->
        <attr name="isAuxiliary" format="boolean" />
        <!-- Set true when this subtype should be selected by default if no other subtypes are
             selected explicitly. Note that a subtype with this parameter being true will
             not be shown in the subtypes list. -->
        <attr name="overridesImplicitlyEnabledSubtype" format="boolean" />
        <!-- The extra value of the subtype. This string can be any string and will be passed to
             the IME when the framework calls the IME with the subtype.  -->
        <attr name="imeSubtypeExtraValue" format="string" />
        <!-- The unique id for the subtype. The input method framework keeps track of enabled
             subtypes by ID. When the IME package gets upgraded, enabled IDs will stay enabled even
             if other attributes are different. If the ID is unspecified (by calling the other
             constructor or 0. Arrays.hashCode(new Object[] {locale, mode, extraValue,
             isAuxiliary, overridesImplicitlyEnabledSubtype}) will be used instead. -->
        <attr name="subtypeId" format="integer"/>
        <!-- Set to true if this subtype is ASCII capable. If the subtype is ASCII
             capable, it should guarantee that the user can input ASCII characters with
             this subtype. This is important because many password fields only allow
             ASCII-characters. -->
        <attr name="isAsciiCapable" format="boolean" />
        <!-- The BCP-47 Language Tag of the subtype.  This replaces
        {@link android.R.styleable#InputMethod_Subtype_imeSubtypeLocale}.  -->
        <attr name="languageTag" format="string" />
    </declare-styleable>

    <!-- Use <code>spell-checker</code> as the root tag of the XML resource that
         describes an
         {@link android.service.textservice.SpellCheckerService} service, which is
         referenced from its
         {@link android.view.textservice.SpellCheckerSession#SERVICE_META_DATA}
         meta-data entry.  Described here are the attributes that can be
         included in that tag. -->
    <declare-styleable name="SpellChecker">
        <!-- The name of the spell checker. -->
        <attr name="label" />
        <!-- Component name of an activity that allows the user to modify
             the settings for this service. -->
        <attr name="settingsActivity"/>
    </declare-styleable>

    <!-- This is the subtype of the spell checker. Subtype can describe locales (for example,
             en_US and fr_FR). -->
    <declare-styleable name="SpellChecker_Subtype">
        <!-- The name of the subtype. -->
        <attr name="label" />
        <!-- The locale of the subtype. This string should be a locale (for example, en_US and
             fr_FR). This is also used by the framework to know the supported locales
             of the spell checker. {@link android.view.textservice.SpellCheckerSubtype#getLocale()}
             returns the value specified in this attribute.  -->
        <attr name="subtypeLocale" format="string" />
        <!-- The extra value of the subtype. This string can be any string and will be passed to
             the SpellChecker.  -->
        <attr name="subtypeExtraValue" format="string" />
        <!-- The unique id for the subtype. The text service (spell checker) framework keeps track
             of enabled subtypes by ID. When the spell checker package gets upgraded, enabled IDs
             will stay enabled even if other attributes are different. If the ID is unspecified or
             explicitly specified to 0 in XML resources,
             {@code Arrays.hashCode(new Object[] {subtypeLocale, extraValue})} will be used instead.
              -->
        <attr name="subtypeId" />
        <!-- The BCP-47 Language Tag of the subtype.  This replaces
        {@link android.R.styleable#SpellChecker_Subtype_subtypeLocale}.  -->
        <attr name="languageTag" />
    </declare-styleable>

    <!-- Use <code>accessibility-service</code> as the root tag of the XML resource that
         describes an {@link android.accessibilityservice.AccessibilityService} service,
         which is referenced from its
         {@link android.accessibilityservice.AccessibilityService#SERVICE_META_DATA}
         meta-data entry. -->
    <declare-styleable name="AccessibilityService">
        <!-- The event types this service would like to receive as specified in
             {@link android.view.accessibility.AccessibilityEvent}. This setting
             can be changed at runtime by calling
             {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)
             android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. -->
        <attr name="accessibilityEventTypes">
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_CLICKED} events.-->
            <flag name="typeViewClicked" value="0x00000001" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_LONG_CLICKED} events. -->
            <flag name="typeViewLongClicked" value="0x00000002" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_SELECTED} events. -->
            <flag name="typeViewSelected" value="0x00000004" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_FOCUSED} events. -->
            <flag name="typeViewFocused" value="0x00000008" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_CHANGED} events. -->
            <flag name="typeViewTextChanged" value="0x00000010" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOW_STATE_CHANGED} events. -->
            <flag name="typeWindowStateChanged" value="0x00000020" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_NOTIFICATION_STATE_CHANGED} events. -->
            <flag name="typeNotificationStateChanged" value="0x00000040" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_HOVER_ENTER} events. -->
            <flag name="typeViewHoverEnter" value="0x00000080" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_HOVER_EXIT} events. -->
            <flag name="typeViewHoverExit" value="0x00000100" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_START} events. -->
            <flag name="typeTouchExplorationGestureStart" value="0x00000200" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_EXPLORATION_GESTURE_END} events. -->
            <flag name="typeTouchExplorationGestureEnd" value="0x00000400" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOW_CONTENT_CHANGED} events. -->
            <flag name="typeWindowContentChanged" value="0x00000800" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_SCROLLED} events. -->
            <flag name="typeViewScrolled" value="0x000001000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_SELECTION_CHANGED} events. -->
            <flag name="typeViewTextSelectionChanged" value="0x000002000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_ANNOUNCEMENT} events. -->
            <flag name="typeAnnouncement" value="0x00004000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_ACCESSIBILITY_FOCUSED} events. -->
            <flag name="typeViewAccessibilityFocused" value="0x00008000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED} events. -->
            <flag name="typeViewAccessibilityFocusCleared" value="0x00010000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY} events. -->
            <flag name="typeViewTextTraversedAtMovementGranularity" value="0x00020000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_GESTURE_DETECTION_START} events. -->
            <flag name="typeGestureDetectionStart" value="0x00040000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_GESTURE_DETECTION_END} events. -->
            <flag name="typeGestureDetectionEnd" value="0x00080000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_INTERACTION_START} events. -->
            <flag name="typeTouchInteractionStart" value="0x00100000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_TOUCH_INTERACTION_END} events. -->
            <flag name="typeTouchInteractionEnd" value="0x00200000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_WINDOWS_CHANGED} events. -->
            <flag name="typeWindowsChanged" value="0x00400000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_VIEW_CONTEXT_CLICKED} events. -->
            <flag name="typeContextClicked" value="0x00800000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPE_ASSIST_READING_CONTEXT} events. -->
            <flag name="typeAssistReadingContext" value="0x01000000" />
            <!-- Receives {@link android.view.accessibility.AccessibilityEvent#TYPES_ALL_MASK} i.e. all events. -->
            <flag name="typeAllMask" value="0xffffffff" />
        </attr>
        <!-- Comma separated package names from which this service would like to receive events (leave out for all packages).
             {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)
             android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. -->
        <attr name="packageNames" format="string" />
        <!-- The feedback types this service provides as specified in
             {@link android.accessibilityservice.AccessibilityServiceInfo}. This setting
             can be changed at runtime by calling
             {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)
             android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. -->
        <attr name="accessibilityFeedbackType">
            <!-- Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_SPOKEN} feedback. -->
            <flag name="feedbackSpoken" value="0x00000001" />
            <!-- Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_HAPTIC} feedback. -->
            <flag name="feedbackHaptic" value="0x00000002" />
            <!-- Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_AUDIBLE} feedback. -->
            <flag name="feedbackAudible" value="0x00000004" />
            <!-- Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_VISUAL} feedback. -->
            <flag name="feedbackVisual" value="0x00000008" />
            <!-- Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_GENERIC} feedback. -->
            <flag name="feedbackGeneric" value="0x00000010" />
            <!-- Provides {@link android.accessibilityservice.AccessibilityServiceInfo#FEEDBACK_ALL_MASK} feedback. -->
            <flag name="feedbackAllMask" value="0xffffffff" />
        </attr>
        <!-- The minimal period in milliseconds between two accessibility events of the same type
             are sent to this service. This setting can be changed at runtime by calling
             {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)
             android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. -->
        <attr name="notificationTimeout" format="integer" />
        <!-- Additional flags as specified in
             {@link android.accessibilityservice.AccessibilityServiceInfo}.
             This setting can be changed at runtime by calling
             {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)
             android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. -->
        <attr name="accessibilityFlags">
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#DEFAULT}. -->
            <flag name="flagDefault" value="0x00000001" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_INCLUDE_NOT_IMPORTANT_VIEWS}. -->
            <flag name="flagIncludeNotImportantViews" value="0x00000002" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE}. -->
            <flag name="flagRequestTouchExplorationMode" value="0x00000004" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY}.
                 Not used by the framework.
            -->
            <flag name="flagRequestEnhancedWebAccessibility" value="0x00000008" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REPORT_VIEW_IDS}. -->
            <flag name="flagReportViewIds" value="0x00000010" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS}. -->
            <flag name="flagRequestFilterKeyEvents" value="0x00000020" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_RETRIEVE_INTERACTIVE_WINDOWS}. -->
            <flag name="flagRetrieveInteractiveWindows" value="0x00000040" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_ENABLE_ACCESSIBILITY_VOLUME}. -->
            <flag name="flagEnableAccessibilityVolume" value="0x00000080" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_ACCESSIBILITY_BUTTON}. -->
            <flag name="flagRequestAccessibilityButton" value="0x00000100" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_FINGERPRINT_GESTURES}. -->
            <flag name="flagRequestFingerprintGestures" value="0x00000200" />
        </attr>
        <!-- Component name of an activity that allows the user to modify
             the settings for this service. This setting cannot be changed at runtime. -->
        <attr name="settingsActivity" />
        <!-- Attribute whether the accessibility service wants to be able to retrieve the
             active window content. This setting cannot be changed at runtime. -->
        <attr name="canRetrieveWindowContent" format="boolean" />
        <!-- Attribute whether the accessibility service wants to be able to request touch
             exploration mode in which touched items are spoken aloud and the UI can be
             explored via gestures.
             <p>
             Required to allow setting the {@link android.accessibilityservice
             #AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE} flag.
             </p>
         -->
        <attr name="canRequestTouchExplorationMode" format="boolean" />
        <!-- Attribute whether the accessibility service wants to be able to request enhanced
             web accessibility enhancements.
             {@deprecated Not used by the framework}
         -->
        <attr name="canRequestEnhancedWebAccessibility" format="boolean" />
        <!-- Attribute whether the accessibility service wants to be able to request to
             filter key events.
             <p>
             Required to allow setting the {@link android.accessibilityservice
             #AccessibilityServiceInfo#FLAG_REQUEST_FILTER_KEY_EVENTS} flag.
             </p>
         -->
        <attr name="canRequestFilterKeyEvents" format="boolean" />
        <!-- Attribute whether the accessibility service wants to be able to control
             display magnification.
         -->
        <attr name="canControlMagnification" format="boolean" />
        <!-- Attribute whether the accessibility service wants to be able to perform gestures. -->
        <attr name="canPerformGestures" format="boolean" />
        <!-- Attribute whether the accessibility service wants to be able to capture gestures from
             the fingerprint sensor.
             <p>
             Required to allow setting the {@link android.accessibilityservice
             #AccessibilityServiceInfo#FLAG_REQUEST_FINGERPRINT_GESTURES} flag to have any effect.
             </p>
         -->
        <attr name="canRequestFingerprintGestures" format="boolean" />
        <!-- Short description of the accessibility service purpose or behavior.-->
        <attr name="description" />
        <!-- Brief summary of the accessibility service purpose or behavior. -->
        <attr name="summary" />
    </declare-styleable>

    <!-- Use <code>print-service</code> as the root tag of the XML resource that
         describes an {@link android.printservice.PrintService} service, which is
         referenced from its {@link android.printservice.PrintService#SERVICE_META_DATA}
         meta-data entry. -->
    <declare-styleable name="PrintService">
        <!-- Fully qualified class name of an activity that allows the user to modify
             the settings for this service. -->
        <attr name="settingsActivity" />
        <!-- Fully qualified class name of an activity that allows the user to manually
             add printers to this print service. -->
        <attr name="addPrintersActivity" format="string"/>
        <!-- Fully qualified class name of an activity with advanced print options
             specific to this print service. -->
        <attr name="advancedPrintOptionsActivity" format="string"/>
        <!-- The vendor name if this print service is vendor specific. -->
        <attr name="vendor" format="string"/>
    </declare-styleable>

    <!-- Use <code>host-apdu-service</code> as the root tag of the XML resource that
         describes an {@link android.nfc.cardemulation.HostApduService} service, which
         is referenced from its {@link android.nfc.cardemulation.HostApduService#SERVICE_META_DATA}
         entry. -->
    <declare-styleable name="HostApduService">
        <!-- Short description of the functionality the service implements. This attribute
             is mandatory.-->
        <attr name="description" />
        <!-- Whether the device must be unlocked before routing data to this service.
             The default is false.-->
        <attr name="requireDeviceUnlock" format="boolean"/>
        <!-- A drawable that can be rendered in Android's system UI for representing
             the service. -->
        <attr name="apduServiceBanner" format="reference"/>
        <!-- Component name of an activity that allows the user to modify
             the settings for this service. -->
        <attr name="settingsActivity"/>
    </declare-styleable>

    <!-- Use <code>offhost-apdu-service</code> as the root tag of the XML resource that
         describes an {@link android.nfc.cardemulation.OffHostApduService}
         service, which is referenced from its
         {@link android.nfc.cardemulation.OffHostApduService#SERVICE_META_DATA} entry. -->
    <declare-styleable name="OffHostApduService">
        <!-- Short description of the functionality the service implements. This attribute
             is mandatory.-->
        <attr name="description" />
        <!-- A drawable that can be rendered in Android's system UI for representing
             the service. -->
        <attr name="apduServiceBanner"/>
        <!-- Component name of an activity that allows the user to modify
             the settings for this service. -->
        <attr name="settingsActivity"/>
    </declare-styleable>

    <!-- Specify one or more <code>aid-group</code> elements inside a
         <code>host-apdu-service</code> or <code>offhost-apdu-service</code>
         element to define a group of ISO7816 Application ID (AIDs) that
         your service can handle.-->
    <declare-styleable name="AidGroup">
        <!-- Short description of what the AID group implements. This attribute is mandatory.-->
        <attr name="description" />
        <!-- The category attribute will be used by the Android platform to present
             multiple applications that register ISO 7816 Application IDs (AIDs) in the
             same category uniformly.
             Additionally, when a category is specified, Android will ensure that either
             all AIDs in this group are routed to this application, or none at all.
             This attribute is optional.-->
        <attr name="category" format="string" />
    </declare-styleable>

    <!-- Specify one or more <code>aid-filter</code> elements inside a
         <code>aid-group</code> element to specify an ISO7816 Application ID (AID)
         your service can handle. -->
    <declare-styleable name="AidFilter">
        <!-- The ISO7816 Application ID. This attribute is mandatory. -->
        <attr name="name" />
    </declare-styleable>

    <!-- Specify one or more <code>aid-prefix-filter</code> elements inside a
         <code>aid-group</code> element to specify an ISO7816 Application ID (AID)
         prefix your service can handle. -->
    <declare-styleable name="AidPrefixFilter">
        <!-- The ISO7816 Application ID. This attribute is mandatory. -->
        <attr name="name" />
    </declare-styleable>

    <!-- Use <code>host-nfcf-service</code> as the root tag of the XML resource that
         describes an {@link android.nfc.cardemulation.HostNfcFService} service, which
         is referenced from its {@link android.nfc.cardemulation.HostNfcFService#SERVICE_META_DATA}
         entry. -->
    <declare-styleable name="HostNfcFService">
        <!-- Short description of the functionality the service implements. This attribute
             is mandatory.-->
        <attr name="description" />
    </declare-styleable>

    <!-- Specify one or more <code>system-code-filter</code> elements inside a
         <code>host-nfcf-service</code> element to specify a System Code
         your service can handle. -->
    <declare-styleable name="SystemCodeFilter">
        <!-- The System Code. This attribute is mandatory. -->
        <attr name="name" />
    </declare-styleable>

    <!-- Specify one or more <code>nfcid2-filter</code> elements inside a
         <code>host-nfcf-service</code> element to specify a NFCID2
         your service can handle. -->
    <declare-styleable name="Nfcid2Filter">
        <!-- The NFCID2. This attribute is mandatory. -->
        <attr name="name" />
    </declare-styleable>

    <!-- Specify one or more <code>t3tPmm-filter</code> elements inside a
         <code>host-nfcf-service</code> element to specify a LF_T3T_PMM. -->
    <declare-styleable name="T3tPmmFilter">
        <attr name="name" />

    </declare-styleable>

    <declare-styleable name="ActionMenuItemView">
        <attr name="minWidth" />
    </declare-styleable>

    <!-- =============================== -->
    <!-- Widget package class attributes -->
    <!-- =============================== -->
    <eat-comment />

    <declare-styleable name="AbsListView">
         <!-- Drawable used to indicate the currently selected item in the list. -->
        <attr name="listSelector" format="color|reference" />
        <!-- When set to true, the selector will be drawn over the selected item.
             Otherwise the selector is drawn behind the selected item. The default
             value is false. -->
        <attr name="drawSelectorOnTop" format="boolean" />
        <!-- Used by ListView and GridView to stack their content from the bottom. -->
        <attr name="stackFromBottom" format="boolean" />
        <!-- When set to true, the list uses a drawing cache during scrolling.
             This makes the rendering faster but uses more memory. The default
             value is true. -->
        <attr name="scrollingCache" format="boolean" />
        <!-- When set to true, the list will filter results as the user types. The
             List's adapter must support the Filterable interface for this to work. -->
        <attr name="textFilterEnabled" format="boolean" />
        <!-- Sets the transcript mode for the list. In transcript mode, the list
             scrolls to the bottom to make new items visible when they are added. -->
        <attr name="transcriptMode">
            <!-- Disables transcript mode. This is the default value. -->
            <enum name="disabled" value="0"/>
            <!-- The list will automatically scroll to the bottom when
                 a data set change notification is received and only if the last item is
                 already visible on screen. -->
            <enum name="normal" value="1" />
            <!-- The list will automatically scroll to the bottom, no matter what items
                 are currently visible. -->
            <enum name="alwaysScroll" value="2" />
        </attr>
        <!-- Indicates that this list will always be drawn on top of solid, single-color
             opaque background. This allows the list to optimize drawing. -->
        <attr name="cacheColorHint" format="color" />
        <!-- Enables the fast scroll thumb that can be dragged to quickly scroll through
             the list. -->
        <attr name="fastScrollEnabled" format="boolean" />
        <!-- Specifies the style of the fast scroll decorations. -->
        <attr name="fastScrollStyle" format="reference" />
        <!-- When set to true, the list will use a more refined calculation
             method based on the pixels height of the items visible on screen. This
             property is set to true by default but should be set to false if your adapter
             will display items of varying heights. When this property is set to true and
             your adapter displays items of varying heights, the scrollbar thumb will
             change size as the user scrolls through the list. When set to false, the list
             will use only the number of items in the adapter and the number of items visible
             on screen to determine the scrollbar's properties. -->
        <attr name="smoothScrollbar" format="boolean" />
        <!-- Defines the choice behavior for the view. By default, lists do not have
             any choice behavior. By setting the choiceMode to singleChoice, the list
             allows up to one item to be in a chosen state. By setting the choiceMode to
             multipleChoice, the list allows any number of items to be chosen.
             Finally, by setting the choiceMode to multipleChoiceModal the list allows
             any number of items to be chosen in a special selection mode.
             The application will supply a
             {@link android.widget.AbsListView.MultiChoiceModeListener} using
             {@link android.widget.AbsListView#setMultiChoiceModeListener} to control the
             selection mode. This uses the {@link android.view.ActionMode} API. -->
        <attr name="choiceMode">
            <!-- Normal list that does not indicate choices. -->
            <enum name="none" value="0" />
            <!-- The list allows up to one choice. -->
            <enum name="singleChoice" value="1" />
            <!-- The list allows multiple choices. -->
            <enum name="multipleChoice" value="2" />
            <!-- The list allows multiple choices in a custom selection mode. -->
            <enum name="multipleChoiceModal" value="3" />
        </attr>

        <!-- When set to true, the list will always show the fast scroll interface.
             This setting implies fastScrollEnabled. -->
        <attr name="fastScrollAlwaysVisible" format="boolean" />
    </declare-styleable>
    <!-- @hide -->
    <declare-styleable name="RecycleListView">
        <!-- Bottom padding to use when no buttons are present. -->
        <attr name="paddingBottomNoButtons" format="dimension" />
        <!-- Top padding to use when no title is present. -->
        <attr name="paddingTopNoTitle" format="dimension" />
    </declare-styleable>
    <declare-styleable name="AbsSpinner">
        <!-- Reference to an array resource that will populate the Spinner.  For static content,
             this is simpler than populating the Spinner programmatically. -->
        <attr name="entries" />
    </declare-styleable>
    <declare-styleable name="AnalogClock">
        <attr name="dial" format="reference"/>
        <attr name="hand_hour" format="reference"/>
        <attr name="hand_minute" format="reference"/>
    </declare-styleable>
    <declare-styleable name="Button">
    </declare-styleable>
    <declare-styleable name="Chronometer">
        <!-- Format string: if specified, the Chronometer will display this
             string, with the first "%s" replaced by the current timer value
             in "MM:SS" or "H:MM:SS" form.
             If no format string is specified, the Chronometer will simply display
             "MM:SS" or "H:MM:SS". -->
        <attr name="format" format="string" localization="suggested" />
        <!-- Specifies whether this Chronometer counts down or counts up from the base.
              If not specified this is false and the Chronometer counts up. -->
        <attr name="countDown" format="boolean" />
    </declare-styleable>
    <declare-styleable name="CompoundButton">
        <!-- Indicates the initial checked state of this button. -->
        <attr name="checked" format="boolean" />
        <!-- Drawable used for the button graphic (for example, checkbox and radio button). -->
        <attr name="button" format="reference" />
        <!-- Tint to apply to the button graphic. -->
        <attr name="buttonTint" format="color" />
        <!-- Blending mode used to apply the button graphic tint. -->
        <attr name="buttonTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
    </declare-styleable>
    <declare-styleable name="CheckedTextView">
        <!-- Indicates the initial checked state of this text. -->
        <attr name="checked" />
        <!-- Drawable used for the check mark graphic. -->
        <attr name="checkMark" format="reference"/>
        <!-- Tint to apply to the check mark. -->
        <attr name="checkMarkTint" format="color" />
        <!-- Blending mode used to apply the check mark tint. -->
        <attr name="checkMarkTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
        <!-- Gravity for aligning a CheckedTextView's checkmark to one side or the other. -->
        <attr name="checkMarkGravity">
            <!-- 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" />
            <!-- 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="EditText">
    </declare-styleable>
    <declare-styleable name="FastScroll">
        <!-- Drawable used for the scroll bar thumb. -->
        <attr name="thumbDrawable" format="reference" />
        <!-- Minimum width of the thumb. -->
        <attr name="thumbMinWidth" format="dimension" />
        <!-- Minimum height of the thumb. -->
        <attr name="thumbMinHeight" format="dimension" />
        <!-- Drawable used for the scroll bar track. -->
        <attr name="trackDrawable" format="reference" />
        <!-- Drawable used for the section header preview when right-aligned. -->
        <attr name="backgroundRight" format="reference" />
        <!-- Drawable used for the section header preview when left-aligned. -->
        <attr name="backgroundLeft" format="reference" />
        <!-- Position of section header preview. -->
        <attr name="position">
            <!-- Floating at the top of the content. -->
            <enum name="floating" value="0" />
            <!-- Pinned to the thumb, vertically centered with the middle of the thumb. -->
            <enum name="atThumb" value="1" />
            <!-- Pinned to the thumb, vertically centered with the top edge of the thumb. -->
            <enum name="aboveThumb" value="2" />
        </attr>
        <attr name="textAppearance" />
        <attr name="textColor" />
        <attr name="textSize" />
        <!-- Minimum width of the section header preview. -->
        <attr name="minWidth" />
        <!-- Minimum height of the section header preview. -->
        <attr name="minHeight" />
        <!-- Padding for the section header preview. -->
        <attr name="padding" />
        <!-- Position of thumb in relation to the track. -->
        <attr name="thumbPosition">
            <!-- The thumb's midpoint is anchored to the track. At its
                 extremes, the thumb will extend half-way outside the
                 track. -->
            <enum name="midpoint" value="0" />
            <!-- The thumb is entirely inside the track. At its extremes,
                 the thumb will be contained entirely within the track. -->
            <enum name="inside" value="1" />
        </attr>
    </declare-styleable>
    <declare-styleable name="FrameLayout">
        <!-- Determines whether to measure all children or just those in
             the VISIBLE or INVISIBLE state when measuring. Defaults to false. -->
        <attr name="measureAllChildren" format="boolean" />
    </declare-styleable>
    <declare-styleable name="ExpandableListView">
        <!-- Indicator shown beside the group View. This can be a stateful Drawable. -->
        <attr name="groupIndicator" format="reference" />
        <!-- Indicator shown beside the child View. This can be a stateful Drawable. -->
        <attr name="childIndicator" format="reference" />
        <!-- The left bound for an item's indicator. To specify a left bound specific to children,
             use childIndicatorLeft. -->
        <attr name="indicatorLeft" format="dimension" />
        <!-- The right bound for an item's indicator. To specify a right bound specific to children,
             use childIndicatorRight. -->
        <attr name="indicatorRight" format="dimension" />
        <!-- The left bound for a child's indicator. -->
        <attr name="childIndicatorLeft" format="dimension" />
        <!-- The right bound for a child's indicator. -->
        <attr name="childIndicatorRight" format="dimension" />
        <!-- Drawable or color that is used as a divider for children. (It will drawn
             below and above child items.) The height of this will be the same as
             the height of the normal list item divider. -->
        <attr name="childDivider" format="reference|color" />
        <!-- The start bound for an item's indicator. To specify a start bound specific to children,
             use childIndicatorStart. -->
        <attr name="indicatorStart" format="dimension" />
        <!-- The end bound for an item's indicator. To specify a right bound specific to children,
             use childIndicatorEnd. -->
        <attr name="indicatorEnd" format="dimension" />
        <!-- The start bound for a child's indicator. -->
        <attr name="childIndicatorStart" format="dimension" />
        <!-- The end bound for a child's indicator. -->
        <attr name="childIndicatorEnd" format="dimension" />
    </declare-styleable>
    <declare-styleable name="Gallery">
        <attr name="gravity" />
        <!-- Sets how long a transition animation should run (in milliseconds)
             when layout has changed.  Only relevant if animation is turned on. -->
        <attr name="animationDuration" format="integer" min="0" />
        <attr name="spacing" format="dimension" />
        <!-- Sets the alpha on the items that are not selected. -->
        <attr name="unselectedAlpha" format="float" />
    </declare-styleable>
    <declare-styleable name="GridView">
        <!-- Defines the default horizontal spacing between columns. -->
        <attr name="horizontalSpacing" format="dimension" />
        <!-- Defines the default vertical spacing between rows. -->
        <attr name="verticalSpacing" format="dimension" />
        <!-- Defines how columns should stretch to fill the available empty space, if any. -->
        <attr name="stretchMode">
            <!-- Stretching is disabled. -->
            <enum name="none" value="0"/>
            <!-- The spacing between each column is stretched. -->
            <enum name="spacingWidth" value="1" />
            <!-- Each column is stretched equally. -->
            <enum name="columnWidth" value="2" />
            <!-- The spacing between each column is uniformly stretched.. -->
            <enum name="spacingWidthUniform" value="3" />
        </attr>
        <!-- Specifies the fixed width for each column. -->
        <attr name="columnWidth" format="dimension" />
        <!-- Defines how many columns to show. -->
        <attr name="numColumns" format="integer" min="0">
            <!-- Display as many columns as possible to fill the available space. -->
            <enum name="auto_fit" value="-1" />
        </attr>
        <!-- Specifies the gravity within each cell. -->
        <attr name="gravity" />
    </declare-styleable>
    <declare-styleable name="ImageSwitcher">
    </declare-styleable>
    <declare-styleable name="ImageView">
        <!-- Sets a drawable as the content of this ImageView. -->
        <attr name="src" format="reference|color" />
        <!-- Controls how the image should be resized or moved to match the size
             of this ImageView.  See {@link android.widget.ImageView.ScaleType} -->
        <attr name="scaleType">
            <!-- Scale using the image matrix when drawing. See
                 {@link android.widget.ImageView#setImageMatrix(Matrix)}. -->
            <enum name="matrix" value="0" />
            <!-- Scale the image using {@link android.graphics.Matrix.ScaleToFit#FILL}. -->
            <enum name="fitXY" value="1" />
            <!-- Scale the image using {@link android.graphics.Matrix.ScaleToFit#START}. -->
            <enum name="fitStart" value="2" />
            <!-- Scale the image using {@link android.graphics.Matrix.ScaleToFit#CENTER}. -->
            <enum name="fitCenter" value="3" />
            <!-- Scale the image using {@link android.graphics.Matrix.ScaleToFit#END}. -->
            <enum name="fitEnd" value="4" />
            <!-- Center the image in the view, but perform no scaling. -->
            <enum name="center" value="5" />
            <!-- Scale the image uniformly (maintain the image's aspect ratio) so both dimensions
                 (width and height) of the image will be equal to or larger than the corresponding
                 dimension of the view (minus padding). The image is then centered in the view. -->
            <enum name="centerCrop" value="6" />
            <!-- Scale the image uniformly (maintain the image's aspect ratio) so that both
                 dimensions (width and height) of the image will be equal to or less than the
                 corresponding dimension of the view (minus padding). The image is then centered in
                 the view. -->
            <enum name="centerInside" value="7" />
        </attr>
        <!-- Set this to true if you want the ImageView to adjust its bounds
             to preserve the aspect ratio of its drawable. -->
        <attr name="adjustViewBounds" format="boolean" />
        <!-- An optional argument to supply a maximum width for this view.
             See {see android.widget.ImageView#setMaxWidth} for details. -->
        <attr name="maxWidth" format="dimension" />
        <!-- An optional argument to supply a maximum height for this view.
             See {see android.widget.ImageView#setMaxHeight} for details. -->
        <attr name="maxHeight" format="dimension" />
        <!-- The tinting color for the image. By default, the tint will blend using SRC_ATOP mode.
             Please note that for compatibility reasons, this is NOT consistent with the default
             SRC_IN tint mode used by {@link android.widget.ImageView#setImageTintList} and by
             similar tint attributes on other views. -->
        <attr name="tint" format="color" />
        <!-- If true, the image view will be baseline aligned with based on its
             bottom edge. -->
        <attr name="baselineAlignBottom" format="boolean" />
         <!-- If true, the image will be cropped to fit within its padding. -->
        <attr name="cropToPadding" format="boolean" />
        <!-- The offset of the baseline within this view. See {see android.view.View#getBaseline}
             for details -->
        <attr name="baseline" format="dimension" />
        <!-- @hide The alpha value (0-255) set on the ImageView's drawable. Equivalent
             to calling ImageView.setAlpha(int), not the same as View.setAlpha(float). -->
        <attr name="drawableAlpha" format="integer" />
        <!-- Blending mode used to apply the image tint. -->
        <attr name="tintMode" />
    </declare-styleable>
    <declare-styleable name="ToggleButton">
        <!-- The text for the button when it is checked. -->
        <attr name="textOn" format="string" />
        <!-- The text for the button when it is not checked. -->
        <attr name="textOff" format="string" />
        <!-- The alpha to apply to the indicator when disabled. -->
        <attr name="disabledAlpha" />
    </declare-styleable>
    <declare-styleable name="RelativeLayout">
        <attr name="gravity" />
        <!-- Indicates what view should not be affected by gravity. -->
        <attr name="ignoreGravity" format="reference" />
    </declare-styleable>
    <declare-styleable name="LinearLayout">
        <!-- Should the layout be a column or a row?  Use "horizontal"
             for a row, "vertical" for a column.  The default is
             horizontal. -->
        <attr name="orientation" />
        <attr name="gravity" />
        <!-- When set to false, prevents the layout from aligning its children's
             baselines. This attribute is particularly useful when the children
             use different values for gravity. The default value is true. -->
        <attr name="baselineAligned" format="boolean" />
        <!-- When a linear layout is part of another layout that is baseline
          aligned, it can specify which of its children to baseline align to
          (that is, which child TextView).-->
        <attr name="baselineAlignedChildIndex" format="integer" min="0"/>
        <!-- Defines the maximum weight sum. If unspecified, the sum is computed
             by adding the layout_weight of all of the children. This can be
             used for instance to give a single child 50% of the total available
             space by giving it a layout_weight of 0.5 and setting the weightSum
             to 1.0. -->
        <attr name="weightSum" format="float" />
        <!-- When set to true, all children with a weight will be considered having
             the minimum size of the largest child. If false, all children are
             measured normally. -->
        <attr name="measureWithLargestChild" format="boolean" />
        <!-- Drawable to use as a vertical divider between buttons. -->
        <attr name="divider" />
        <!-- Setting for which dividers to show. -->
        <attr name="showDividers">
            <flag name="none" value="0" />
            <flag name="beginning" value="1" />
            <flag name="middle" value="2" />
            <flag name="end" value="4" />
        </attr>
        <!-- Size of padding on either end of a divider. -->
        <attr name="dividerPadding" format="dimension" />
    </declare-styleable>
    <declare-styleable name="GridLayout">
        <!-- The orientation property is not used during layout. It is only used to
        allocate row and column parameters when they are not specified by its children's
        layout paramters. GridLayout works like LinearLayout in this case;
        putting all the components either in a single row or in a single column -
        depending on the value of this flag. In the horizontal case, a columnCount
        property may be additionally supplied to force new rows to be created when a
        row is full. The rowCount attribute may be used similarly in the vertical case.
        The default is horizontal. -->
        <attr name="orientation" />
        <!-- The maxmimum number of rows to create when automatically positioning children. -->
        <attr name="rowCount" format="integer" />
        <!-- The maxmimum number of columns to create when automatically positioning children. -->
        <attr name="columnCount" format="integer" />
        <!-- When set to true, tells GridLayout to use default margins when none are specified
        in a view's layout parameters.
        The default value is false.
        See {@link android.widget.GridLayout#setUseDefaultMargins(boolean)}.-->
        <attr name="useDefaultMargins" format="boolean" />
        <!-- When set to alignMargins, causes alignment to take place between the outer
        boundary of a view, as defined by its margins. When set to alignBounds,
        causes alignment to take place between the edges of the view.
        The default is alignMargins.
        See {@link android.widget.GridLayout#setAlignmentMode(int)}.-->
        <attr name="alignmentMode" />
        <!-- When set to true, forces row boundaries to appear in the same order
        as row indices.
        The default is true.
        See {@link android.widget.GridLayout#setRowOrderPreserved(boolean)}.-->
        <attr name="rowOrderPreserved" format="boolean" />
        <!-- When set to true, forces column boundaries to appear in the same order
        as column indices.
        The default is true.
        See {@link android.widget.GridLayout#setColumnOrderPreserved(boolean)}.-->
        <attr name="columnOrderPreserved" format="boolean" />
    </declare-styleable>
    <declare-styleable name="ListView">
        <!-- Reference to an array resource that will populate the ListView.  For static content,
             this is simpler than populating the ListView programmatically. -->
        <attr name="entries" />
        <!-- Drawable or color to draw between list items. -->
        <attr name="divider" format="reference|color" />
        <!-- Height of the divider. Will use the intrinsic height of the divider if this
             is not specified. -->
        <attr name="dividerHeight" format="dimension" />
        <!-- When set to false, the ListView will not draw the divider after each header view.
             The default value is true. -->
        <attr name="headerDividersEnabled" format="boolean" />
        <!-- When set to false, the ListView will not draw the divider before each footer view.
             The default value is true. -->
        <attr name="footerDividersEnabled" format="boolean" />
        <!-- Drawable to draw above list content. -->
        <attr name="overScrollHeader" format="reference|color" />
        <!-- Drawable to draw below list content. -->
        <attr name="overScrollFooter" format="reference|color" />
    </declare-styleable>
    <declare-styleable name="PreferenceFrameLayout">
        <!-- Padding to use at the top of the prefs content. -->
        <attr name="borderTop" format="dimension" />
        <!-- Padding to use at the bottom of the prefs content. -->
        <attr name="borderBottom" format="dimension" />
        <!-- Padding to use at the left of the prefs content. -->
        <attr name="borderLeft" format="dimension" />
        <!-- Padding to use at the right of the prefs content. -->
        <attr name="borderRight" format="dimension" />
    </declare-styleable>
    <declare-styleable name="PreferenceFrameLayout_Layout">
        <!-- Padding to use at the top of the prefs content. -->
        <attr name="layout_removeBorders" format="boolean" />
    </declare-styleable>
    <declare-styleable name="MenuView">
        <!-- Default appearance of menu item text. -->
        <attr name="itemTextAppearance" format="reference" />
        <!-- Default horizontal divider between rows of menu items. -->
        <attr name="horizontalDivider" format="reference" />
        <!-- Default vertical divider between menu items. -->
        <attr name="verticalDivider" format="reference" />
        <!-- Default background for the menu header. -->
        <attr name="headerBackground" format="color|reference" />
        <!-- Default background for each menu item. -->
        <attr name="itemBackground" format="color|reference" />
        <!-- Default animations for the menu. -->
        <attr name="windowAnimationStyle" />
        <!-- Default disabled icon alpha for each menu item that shows an icon. -->
        <attr name="itemIconDisabledAlpha" format="float" />
        <!-- Whether space should be reserved in layout when an icon is missing. -->
        <attr name="preserveIconSpacing" format="boolean" />
        <!-- Drawable for the arrow icon indicating a particular item is a submenu. -->
        <attr name="subMenuArrow" format="reference" />
    </declare-styleable>
    <declare-styleable name="IconMenuView">
        <!-- Defines the height of each row. -->
        <attr name="rowHeight" format="dimension" />
        <!-- Defines the maximum number of rows displayed. -->
        <attr name="maxRows" format="integer" />
        <!-- Defines the maximum number of items per row. -->
        <attr name="maxItemsPerRow" format="integer" />
        <!-- Defines the maximum number of items to show. -->
        <attr name="maxItems" format="integer" />
        <!-- 'More' icon. -->
        <attr name="moreIcon" format="reference" />
    </declare-styleable>

    <declare-styleable name="ProgressBar">
        <!-- Defines the minimum value. -->
        <attr name="min" format="integer" />
        <!-- Defines the maximum value. -->
        <attr name="max" format="integer" />
        <!-- Defines the default progress value, between 0 and max. -->
        <attr name="progress" format="integer" />
        <!-- Defines the secondary progress value, between 0 and max. This progress is drawn between
             the primary progress and the background.  It can be ideal for media scenarios such as
             showing the buffering progress while the default progress shows the play progress. -->
        <attr name="secondaryProgress" format="integer" />
        <!-- Allows to enable the indeterminate mode. In this mode the progress
         bar plays an infinite looping animation. -->
        <attr name="indeterminate" format="boolean" />
        <!-- Restricts to ONLY indeterminate mode (state-keeping progress mode will not work). -->
        <attr name="indeterminateOnly" format="boolean" />
        <!-- Drawable used for the indeterminate mode. -->
        <attr name="indeterminateDrawable" format="reference" />
        <!-- Drawable used for the progress mode. -->
        <attr name="progressDrawable" format="reference" />
        <!-- Duration of the indeterminate animation. -->
        <attr name="indeterminateDuration" format="integer" min="1" />
        <!-- Defines how the indeterminate mode should behave when the progress
        reaches max. -->
        <attr name="indeterminateBehavior">
            <!-- Progress starts over from 0. -->
            <enum name="repeat" value="1" />
            <!-- Progress keeps the current value and goes back to 0. -->
            <enum name="cycle" value="2" />
        </attr>
        <attr name="minWidth" format="dimension" />
        <attr name="maxWidth" />
        <attr name="minHeight" format="dimension" />
        <attr name="maxHeight" />
        <attr name="interpolator" format="reference" />
        <!-- Timeout between frames of animation in milliseconds.
             {@deprecated Not used by the framework}. -->
        <attr name="animationResolution" format="integer" />
        <!-- Defines if the associated drawables need to be mirrored when in RTL mode.
             Default is false. -->
        <attr name="mirrorForRtl" format="boolean" />
        <!-- Tint to apply to the progress indicator. -->
        <attr name="progressTint" format="color" />
        <!-- Blending mode used to apply the progress indicator tint. -->
        <attr name="progressTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
        <!-- Tint to apply to the progress indicator background. -->
        <attr name="progressBackgroundTint" format="color" />
        <!-- Blending mode used to apply the progress indicator background tint. -->
        <attr name="progressBackgroundTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
        <!-- Tint to apply to the secondary progress indicator. -->
        <attr name="secondaryProgressTint" format="color" />
        <!-- Blending mode used to apply the secondary progress indicator tint. -->
        <attr name="secondaryProgressTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
        <!-- Tint to apply to the indeterminate progress indicator. -->
        <attr name="indeterminateTint" format="color" />
        <!-- Blending mode used to apply the indeterminate progress indicator tint. -->
        <attr name="indeterminateTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
        <!-- Tint to apply to the background. -->
        <attr name="backgroundTint" />
        <!-- Blending mode used to apply the background tint. -->
        <attr name="backgroundTintMode" />
    </declare-styleable>

    <declare-styleable name="SeekBar">
        <!-- Draws the thumb on a seekbar. -->
        <attr name="thumb" format="reference" />
        <!-- An offset for the thumb that allows it to extend out of the range of the track. -->
        <attr name="thumbOffset" format="dimension" />
        <!-- Whether to split the track and leave a gap for the thumb drawable. -->
        <attr name="splitTrack" format="boolean" />
        <!-- Whether to force the track's alpha to ?android:attr/disabledAlpha
             when disabled. This is required for Holo and Gingerbread, but
             should always be false for Material and  beyond.
             @hide Developers shouldn't need to change this. -->
        <attr name="useDisabledAlpha" format="boolean" />
        <!-- Tint to apply to the thumb drawable. -->
        <attr name="thumbTint" format="color" />
        <!-- Blending mode used to apply the thumb tint. -->
        <attr name="thumbTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
        <!-- Drawable displayed at each progress position on a seekbar. -->
        <attr name="tickMark" format="reference" />
        <!-- Tint to apply to the tick mark drawable. -->
        <attr name="tickMarkTint" format="color" />
        <!-- Blending mode used to apply the tick mark tint. -->
        <attr name="tickMarkTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
    </declare-styleable>

    <declare-styleable name="StackView">
        <!-- Color of the res-out outline. -->
        <attr name="resOutColor" format="color" />
        <!-- Color of the outline of click feedback. -->
        <attr name="clickColor" format="color" />
    </declare-styleable>

    <declare-styleable name="RatingBar">
        <!-- The number of stars (or rating items) to show. -->
        <attr name="numStars" format="integer" />
        <!-- The rating to set by default. -->
        <attr name="rating" format="float" />
        <!-- The step size of the rating. -->
        <attr name="stepSize" format="float" />
        <!-- Whether this rating bar is an indicator (and non-changeable by the user). -->
        <attr name="isIndicator" format="boolean" />
    </declare-styleable>

    <declare-styleable name="RadioGroup">
        <!-- The id of the child radio button that should be checked by default
             within this radio group. -->
        <attr name="checkedButton" format="integer" />
        <!-- Should the radio group be a column or a row?  Use "horizontal"
             for a row, "vertical" for a column.  The default is
             vertical. -->
        <attr name="orientation" />
    </declare-styleable>
    <declare-styleable name="TableLayout">
        <!-- The zero-based index of the columns to stretch. The column indices
             must be separated by a comma: 1, 2, 5. Illegal and duplicate
             indices are ignored. You can stretch all columns by using the
             value "*" instead. Note that a column can be marked stretchable
             and shrinkable at the same time. -->
        <attr name="stretchColumns" format="string" />
       <!-- The zero-based index of the columns to shrink. The column indices
             must be separated by a comma: 1, 2, 5. Illegal and duplicate
             indices are ignored. You can shrink all columns by using the
             value "*" instead. Note that a column can be marked stretchable
             and shrinkable at the same time. -->
        <attr name="shrinkColumns" format="string" />
        <!-- The zero-based index of the columns to collapse. The column indices
             must be separated by a comma: 1, 2, 5. Illegal and duplicate
             indices are ignored. -->
        <attr name="collapseColumns" format="string" />
    </declare-styleable>
    <declare-styleable name="TableRow">

    </declare-styleable>
    <declare-styleable name="TableRow_Cell">
        <!-- The index of the column in which this child should be. -->
        <attr name="layout_column" format="integer" />
        <!-- Defines how many columns this child should span.  Must be >= 1.-->
        <attr name="layout_span" format="integer" />
    </declare-styleable>
    <declare-styleable name="TabWidget">
        <!-- Drawable used to draw the divider between tabs. -->
        <attr name="divider" />
        <!-- Determines whether the strip under the tab indicators is drawn or not. -->
        <attr name="tabStripEnabled" format="boolean" />
        <!-- Drawable used to draw the left part of the strip underneath the tabs. -->
        <attr name="tabStripLeft" format="reference" />
        <!-- Drawable used to draw the right part of the strip underneath the tabs. -->
        <attr name="tabStripRight" format="reference" />
        <!-- Layout used to organize each tab's content. -->
        <attr name="tabLayout" format="reference" />
    </declare-styleable>
    <declare-styleable name="TextAppearance">
        <!-- Text color. -->
        <attr name="textColor" />
        <!-- Size of the text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp). -->
        <attr name="textSize" />
        <!-- Style (bold, italic, bolditalic) for the text. -->
        <attr name="textStyle" />
        <!-- Typeface (normal, sans, serif, monospace) for the text. -->
        <attr name="typeface" />
        <!-- Font family (named by string) for the text. -->
        <attr name="fontFamily" />
        <!-- Color of the text selection highlight. -->
        <attr name="textColorHighlight" />
        <!-- Color of the hint text. -->
        <attr name="textColorHint" />
        <!-- Color of the links. -->
        <attr name="textColorLink" />
        <!-- Present the text in ALL CAPS. This may use a small-caps form when available. -->
        <attr name="textAllCaps" format="boolean" />
        <!-- Place a blurred shadow of text underneath the text, drawn with the
             specified color. The text shadow produced does not interact with
             properties on View that are responsible for real time shadows,
             {@link android.R.styleable#View_elevation elevation} and
             {@link android.R.styleable#View_translationZ translationZ}. -->
        <attr name="shadowColor" format="color" />
        <!-- Horizontal offset of the text shadow. -->
        <attr name="shadowDx" format="float" />
        <!-- Vertical offset of the text shadow. -->
        <attr name="shadowDy" format="float" />
        <!-- Blur radius of the text shadow. -->
        <attr name="shadowRadius" format="float" />
        <!-- Elegant text height, especially for less compacted complex script text. -->
        <attr name="elegantTextHeight" format="boolean" />
        <!-- Text letter-spacing. -->
        <attr name="letterSpacing" format="float" />
        <!-- Font feature settings. -->
        <attr name="fontFeatureSettings" format="string" />
    </declare-styleable>
    <declare-styleable name="TextClock">
        <!-- Specifies the formatting pattern used to show the time and/or date
             in 12-hour mode. Please refer to {@link android.text.format.DateFormat}
             for a complete description of accepted formatting patterns.
             The default pattern is a locale-appropriate equivalent of "h:mm a". -->
        <attr name="format12Hour" format="string"/>
        <!-- Specifies the formatting pattern used to show the time and/or date
             in 24-hour mode. Please refer to {@link android.text.format.DateFormat}
             for a complete description of accepted formatting patterns.
             The default pattern is a locale-appropriate equivalent of "H:mm". -->
        <attr name="format24Hour" format="string"/>
        <!-- Specifies the time zone to use. When this attribute is specified, the
             TextClock will ignore the time zone of the system. To use the user's
             time zone, do not specify this attribute. The default value is the
             user's time zone. Please refer to {@link java.util.TimeZone} for more
             information about time zone ids. -->
        <attr name="timeZone" format="string"/>
    </declare-styleable>
    <declare-styleable name="TextSwitcher">
    </declare-styleable>
    <declare-styleable name="TextView">
        <!-- Determines the minimum type that getText() will return.
             The default is "normal".
             Note that EditText and LogTextBox always return Editable,
             even if you specify something less powerful here. -->
        <attr name="bufferType">
            <!-- Can return any CharSequence, possibly a
             Spanned one if the source text was Spanned. -->
            <enum name="normal" value="0" />
            <!-- Can only return Spannable. -->
            <enum name="spannable" value="1" />
            <!-- Can only return Spannable and Editable. -->
            <enum name="editable" value="2" />
        </attr>
        <!-- Text to display. -->
        <attr name="text" format="string" localization="suggested" />
        <!-- Hint text to display when the text is empty. -->
        <attr name="hint" format="string" />
        <!-- Text color. -->
        <attr name="textColor" />
        <!-- Color of the text selection highlight. -->
        <attr name="textColorHighlight" />
        <!-- Color of the hint text. -->
        <attr name="textColorHint" />
        <!-- Base text color, typeface, size, and style. -->
        <attr name="textAppearance" />
        <!-- Size of the text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp). -->
        <attr name="textSize" />
        <!-- Sets the horizontal scaling factor for the text. -->
        <attr name="textScaleX" format="float" />
        <!-- Typeface (normal, sans, serif, monospace) for the text. -->
        <attr name="typeface" />
        <!-- Style (bold, italic, bolditalic) for the text. -->
        <attr name="textStyle" />
        <!-- Font family (named by string) for the text. -->
        <attr name="fontFamily" />
        <!-- Text color for links. -->
        <attr name="textColorLink" />
        <!-- Makes the cursor visible (the default) or invisible. -->
        <attr name="cursorVisible" format="boolean" />
        <!-- Makes the TextView be at most this many lines tall.

        When used on an editable text, the <code>inputType</code> attribute's value must be
        combined with the <code>textMultiLine</code> flag for the maxLines attribute to apply. -->
        <attr name="maxLines" format="integer" min="0" />
        <!-- Makes the TextView be at most this many pixels tall. -->
        <attr name="maxHeight" />
        <!-- Makes the TextView be exactly this many lines tall. -->
        <attr name="lines" format="integer" min="0" />
        <!-- Makes the TextView be exactly this tall.
             You could get the same effect by specifying this number in the
             layout parameters. -->
        <attr name="height" format="dimension" />
        <!-- Makes the TextView be at least this many lines tall.

        When used on an editable text, the <code>inputType</code> attribute's value must be
        combined with the <code>textMultiLine</code> flag for the minLines attribute to apply. -->
        <attr name="minLines" format="integer" min="0" />
        <!-- Makes the TextView be at least this many pixels tall. -->
        <attr name="minHeight" />
        <!-- Makes the TextView be at most this many ems wide. -->
        <attr name="maxEms" format="integer" min="0" />
        <!-- Makes the TextView be at most this many pixels wide. -->
        <attr name="maxWidth" />
        <!-- Makes the TextView be exactly this many ems wide. -->
        <attr name="ems" format="integer" min="0" />
        <!-- Makes the TextView be exactly this wide.
             You could get the same effect by specifying this number in the
             layout parameters. -->
        <attr name="width" format="dimension" />
        <!-- Makes the TextView be at least this many ems wide. -->
        <attr name="minEms" format="integer" min="0" />
        <!-- Makes the TextView be at least this many pixels wide. -->
        <attr name="minWidth" />
        <!-- Specifies how to align the text by the view's x- and/or y-axis
             when the text is smaller than the view. -->
        <attr name="gravity" />
        <!-- Whether the text is allowed to be wider than the view (and
             therefore can be scrolled horizontally). -->
        <attr name="scrollHorizontally" format="boolean" />
        <!-- Whether the characters of the field are displayed as
             password dots instead of themselves.
             {@deprecated Use inputType instead.} -->
        <attr name="password" format="boolean" />
        <!-- Constrains the text to a single horizontally scrolling line
             instead of letting it wrap onto multiple lines, and advances
             focus instead of inserting a newline when you press the
             enter key.

             The default value is false (multi-line wrapped text mode) for non-editable text, but if
             you specify any value for inputType, the default is true (single-line input field mode).

             {@deprecated This attribute is deprecated. Use <code>maxLines</code> instead to change
             the layout of a static text, and use the <code>textMultiLine</code> flag in the
             inputType attribute instead for editable text views (if both singleLine and inputType
             are supplied, the inputType flags will override the value of singleLine). } -->
        <attr name="singleLine" format="boolean" />
        <!-- Specifies whether the widget is enabled. The interpretation of the enabled state varies by subclass.
             For example, a non-enabled EditText prevents the user from editing the contained text, and
             a non-enabled Button prevents the user from tapping the button.
             The appearance of enabled and non-enabled widgets may differ, if the drawables referenced
             from evaluating state_enabled differ. -->
        <attr name="enabled" format="boolean" />
        <!-- If the text is selectable, select it all when the view takes
             focus. -->
        <attr name="selectAllOnFocus" format="boolean" />
        <!-- Leave enough room for ascenders and descenders instead of
             using the font ascent and descent strictly.  (Normally true). -->
        <attr name="includeFontPadding" format="boolean" />
        <!-- Set an input filter to constrain the text length to the
             specified number. -->
        <attr name="maxLength" format="integer" min="0" />
        <!-- Place a blurred shadow of text underneath the text, drawn with the
             specified color. The text shadow produced does not interact with
             properties on View that are responsible for real time shadows,
             {@link android.R.styleable#View_elevation elevation} and
             {@link android.R.styleable#View_translationZ translationZ}. -->
        <attr name="shadowColor" />
        <!-- Horizontal offset of the text shadow. -->
        <attr name="shadowDx" />
        <!-- Vertical offset of the text shadow. -->
        <attr name="shadowDy" />
        <!-- Blur radius of the text shadow. -->
        <attr name="shadowRadius" />
        <attr name="autoLink" />
        <!-- If set to false, keeps the movement method from being set
             to the link movement method even if autoLink causes links
             to be found. -->
        <attr name="linksClickable" format="boolean" />
        <!-- If set, specifies that this TextView has a numeric input method.
             The default is false.
             {@deprecated Use inputType instead.} -->
        <attr name="numeric">
            <!-- Input is numeric. -->
            <flag name="integer" value="0x01" />
            <!-- Input is numeric, with sign allowed. -->
            <flag name="signed" value="0x03" />
            <!-- Input is numeric, with decimals allowed. -->
            <flag name="decimal" value="0x05" />
        </attr>
        <!-- If set, specifies that this TextView has a numeric input method
             and that these specific characters are the ones that it will
             accept.
             If this is set, numeric is implied to be true.
             The default is false. -->
        <attr name="digits" format="string" />
        <!-- If set, specifies that this TextView has a phone number input
             method. The default is false.
             {@deprecated Use inputType instead.} -->
        <attr name="phoneNumber" format="boolean" />
        <!-- If set, specifies that this TextView should use the specified
             input method (specified by fully-qualified class name).
             {@deprecated Use inputType instead.} -->
        <attr name="inputMethod" format="string" />
        <!-- If set, specifies that this TextView has a textual input method
             and should automatically capitalize what the user types.
             The default is "none".
             {@deprecated Use inputType instead.} -->
        <attr name="capitalize">
            <!-- Don't automatically capitalize anything. -->
            <enum name="none" value="0" />
            <!-- Capitalize the first word of each sentence. -->
            <enum name="sentences" value="1" />
            <!-- Capitalize the first letter of every word. -->
            <enum name="words" value="2" />
            <!-- Capitalize every character. -->
            <enum name="characters" value="3" />
        </attr>
        <!-- If set, specifies that this TextView has a textual input method
             and automatically corrects some common spelling errors.
             The default is "false".
             {@deprecated Use inputType instead.} -->
        <attr name="autoText" format="boolean" />
        <!-- If set, specifies that this TextView has an input method.
             It will be a textual one unless it has otherwise been specified.
             For TextView, this is false by default.  For EditText, it is
             true by default.
             {@deprecated Use inputType instead.} -->
        <attr name="editable" format="boolean" />
        <!-- If set, the text view will include its current complete text
             inside of its frozen icicle in addition to meta-data such as
             the current cursor position.  By default this is disabled;
             it can be useful when the contents of a text view is not stored
             in a persistent place such as a content provider. For
             {@link android.widget.EditText} it is always enabled, regardless
             of the value of the attribute. -->
        <attr name="freezesText" format="boolean" />
        <!-- If set, causes words that are longer than the view is wide
             to be ellipsized instead of broken in the middle.
             You will often also want to set scrollHorizontally or singleLine
             as well so that the text as a whole is also constrained to
             a single line instead of still allowed to be broken onto
             multiple lines. -->
        <attr name="ellipsize" />
        <!-- The drawable to be drawn above the text. -->
        <attr name="drawableTop" format="reference|color" />
        <!-- The drawable to be drawn below the text. -->
        <attr name="drawableBottom" format="reference|color" />
        <!-- The drawable to be drawn to the left of the text. -->
        <attr name="drawableLeft" format="reference|color" />
        <!-- The drawable to be drawn to the right of the text. -->
        <attr name="drawableRight" format="reference|color" />
        <!-- The drawable to be drawn to the start of the text. -->
        <attr name="drawableStart" format="reference|color" />
        <!-- The drawable to be drawn to the end of the text. -->
        <attr name="drawableEnd" format="reference|color" />
        <!-- The padding between the drawables and the text. -->
        <attr name="drawablePadding" format="dimension" />
        <!-- Tint to apply to the compound (left, top, etc.) drawables. -->
        <attr name="drawableTint" format="color" />
        <!-- Blending mode used to apply the compound (left, top, etc.) drawables tint. -->
        <attr name="drawableTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
        <!-- Extra spacing between lines of text. -->
        <attr name="lineSpacingExtra" format="dimension" />
        <!-- Extra spacing between lines of text, as a multiplier. -->
        <attr name="lineSpacingMultiplier" format="float" />
        <!-- The number of times to repeat the marquee animation. Only applied if the
             TextView has marquee enabled. -->
        <attr name="marqueeRepeatLimit" format="integer">
            <!-- Indicates that marquee should repeat indefinitely. -->
            <enum name="marquee_forever" value="-1" />
        </attr>
        <attr name="inputType" />
        <!-- Whether undo should be allowed for editable text. Defaults to true. -->
        <attr name="allowUndo" format="boolean" />
        <attr name="imeOptions" />
        <!-- An addition content type description to supply to the input
             method attached to the text view, which is private to the
             implementation of the input method.  This simply fills in
             the {@link android.view.inputmethod.EditorInfo#privateImeOptions
             EditorInfo.privateImeOptions} field when the input
             method is connected. -->
        <attr name="privateImeOptions" format="string" />
        <!-- Supply a value for
             {@link android.view.inputmethod.EditorInfo#actionLabel EditorInfo.actionLabel}
             used when an input method is connected to the text view. -->
        <attr name="imeActionLabel" format="string" />
        <!-- Supply a value for
             {@link android.view.inputmethod.EditorInfo#actionId EditorInfo.actionId}
             used when an input method is connected to the text view. -->
        <attr name="imeActionId" format="integer" />
        <!-- Reference to an
             {@link android.R.styleable#InputExtras &lt;input-extras&gt;}
             XML resource containing additional data to
             supply to an input method, which is private to the implementation
             of the input method.  This simply fills in
             the {@link android.view.inputmethod.EditorInfo#extras
             EditorInfo.extras} field when the input
             method is connected. -->
        <attr name="editorExtras" format="reference" />

        <!-- Reference to a drawable that will be used to display a text selection
             anchor on the left side of a selection region. -->
        <attr name="textSelectHandleLeft" />
        <!-- Reference to a drawable that will be used to display a text selection
             anchor on the right side of a selection region. -->
        <attr name="textSelectHandleRight" />
        <!-- Reference to a drawable that will be used to display a text selection
             anchor for positioning the cursor within text. -->
        <attr name="textSelectHandle" />
        <!-- The layout of the view that is displayed on top of the cursor to paste inside a
             TextEdit field. -->
        <attr name="textEditPasteWindowLayout" />
        <!-- Variation of textEditPasteWindowLayout displayed when the clipboard is empty. -->
        <attr name="textEditNoPasteWindowLayout" />
        <!-- Used instead of textEditPasteWindowLayout when the window is moved on the side of the
             insertion cursor because it would be clipped if it were positioned on top. -->
        <attr name="textEditSidePasteWindowLayout" />
        <!-- Variation of textEditSidePasteWindowLayout displayed when the clipboard is empty. -->
        <attr name="textEditSideNoPasteWindowLayout" />

        <!-- Layout of the TextView item that will populate the suggestion popup window. -->
        <attr name="textEditSuggestionItemLayout" />
        <!-- Layout of the container of the suggestion popup window. -->
        <attr name="textEditSuggestionContainerLayout" />
        <!-- Style of the highlighted string in the suggestion popup window. -->
        <attr name="textEditSuggestionHighlightStyle" />


        <!-- Reference to a drawable that will be drawn under the insertion cursor. -->
        <attr name="textCursorDrawable" />

        <!-- Indicates that the content of a non-editable text can be selected. -->
        <attr name="textIsSelectable" />
        <!-- Present the text in ALL CAPS. This may use a small-caps form when available. -->
        <attr name="textAllCaps" />
        <!-- Elegant text height, especially for less compacted complex script text. -->
        <attr name="elegantTextHeight" />
        <!-- Text letter-spacing. -->
        <attr name="letterSpacing" />
        <!-- Font feature settings. -->
        <attr name="fontFeatureSettings" />
        <!-- Break strategy (control over paragraph layout). -->
        <attr name="breakStrategy">
            <!-- Line breaking uses simple strategy. -->
            <enum name="simple" value="0" />
            <!-- Line breaking uses high-quality strategy, including hyphenation. -->
            <enum name="high_quality" value="1" />
            <!-- Line breaking strategy balances line lengths. -->
            <enum name="balanced" value="2" />
        </attr>
        <!-- Frequency of automatic hyphenation. -->
        <attr name="hyphenationFrequency">
            <!-- No hyphenation. -->
            <enum name="none" value="0" />
            <!-- Less frequent hyphenation, useful for informal use cases, such
            as chat messages. -->
            <enum name="normal" value="1" />
            <!-- Standard amount of hyphenation, useful for running text and for
            screens with limited space for text. -->
            <enum name="full" value="2" />
        </attr>
        <!-- Specify the type of auto-size. Note that this feature is not supported by EditText,
        works only for TextView. -->
        <attr name="autoSizeTextType" format="enum">
            <!-- No auto-sizing (default). -->
            <enum name="none" value="0" />
            <!-- Uniform horizontal and vertical text size scaling to fit within the
            container. -->
            <enum name="uniform" value="1" />
        </attr>
        <!-- Specify the auto-size step size if <code>autoSizeTextType</code> is set to
        <code>uniform</code>. The default is 1px. Overwrites
        <code>autoSizePresetSizes</code> if set. -->
        <attr name="autoSizeStepGranularity" format="dimension" />
        <!-- Resource array of dimensions to be used in conjunction with
        <code>autoSizeTextType</code> set to <code>uniform</code>. Overrides
        <code>autoSizeStepGranularity</code> if set. -->
        <attr name="autoSizePresetSizes"/>
        <!-- The minimum text size constraint to be used when auto-sizing text. -->
        <attr name="autoSizeMinTextSize" format="dimension" />
        <!-- The maximum text size constraint to be used when auto-sizing text. -->
        <attr name="autoSizeMaxTextSize" format="dimension" />
        <!-- Mode for justification. -->
        <attr name="justificationMode">
            <!-- No justification. -->
            <enum name="none" value="0" />
            <!-- Justification by stretching word spacing. -->
            <enum name="inter_word" value = "1" />
        </attr>
    </declare-styleable>
    <declare-styleable name="TextViewAppearance">
        <!-- Base text color, typeface, size, and style. -->
        <attr name="textAppearance" />
    </declare-styleable>
    <declare-styleable name="SelectionModeDrawables">
        <attr name="actionModeSelectAllDrawable" />
        <attr name="actionModeCutDrawable" />
        <attr name="actionModeCopyDrawable" />
        <attr name="actionModePasteDrawable" />
    </declare-styleable>
    <declare-styleable name="SuggestionSpan">
        <attr name="textUnderlineColor" />
        <attr name="textUnderlineThickness" />
    </declare-styleable>
    <!-- An <code>input-extras</code> is a container for extra data to supply to
         an input method.  Contains
         one more more {@link #Extra <extra>} tags.  -->
    <declare-styleable name="InputExtras">
    </declare-styleable>
    <declare-styleable name="AutoCompleteTextView">
        <!-- Defines the hint displayed in the drop down menu. -->
        <attr name="completionHint" format="string" />
        <!-- Defines the hint view displayed in the drop down menu. -->
        <attr name="completionHintView" format="reference" />
        <!-- Defines the number of characters that the user must type before
         completion suggestions are displayed in a drop down menu. -->
        <attr name="completionThreshold" format="integer" min="1" />
        <!-- Selector in a drop down list. -->
        <attr name="dropDownSelector" format="reference|color" />
        <!-- View to anchor the auto-complete dropdown to. If not specified, the text view itself
             is used. -->
        <attr name="dropDownAnchor" format="reference" />
        <!-- Specifies the basic width of the dropdown. Its value may
             be a dimension (such as "12dip") for a constant width,
             fill_parent or match_parent to match the width of the
             screen, or wrap_content to match the width of
             the anchored view. -->
        <attr name="dropDownWidth" format="dimension">
            <!-- The dropdown should fill the width of the screen.
                 This constant is deprecated starting from API Level 8 and
                 is replaced by {@code match_parent}. -->
            <enum name="fill_parent" value="-1" />
            <!-- The dropdown should fit the width of the screen.
                 Introduced in API Level 8. -->
            <enum name="match_parent" value="-1" />
            <!-- The dropdown should fit the width of its anchor. -->
            <enum name="wrap_content" value="-2" />
        </attr>
        <!-- Specifies the basic height of the dropdown. Its value may
             be a dimension (such as "12dip") for a constant height,
             fill_parent or match_parent to fill the height of the
             screen, or wrap_content to match the height of
             the content of the drop down. -->
        <attr name="dropDownHeight" format="dimension">
            <!-- The dropdown should fit the height of the screen.
                 This constant is deprecated starting from API Level 8 and
                 is replaced by {@code match_parent}. -->
            <enum name="fill_parent" value="-1" />
            <!-- The dropdown should fit the height of the screen.
                 Introduced in API Level 8. -->
            <enum name="match_parent" value="-1" />
            <!-- The dropdown should fit the height of the content. -->
            <enum name="wrap_content" value="-2" />
        </attr>
        <attr name="inputType" />
        <!-- Theme to use for the completion popup window. -->
        <attr name="popupTheme" />
    </declare-styleable>
    <declare-styleable name="PopupWindow">
        <!-- The background to use for the popup window. -->
        <attr name="popupBackground" format="reference|color" />
        <!-- Window elevation to use for the popup window. -->
        <attr name="popupElevation" format="dimension" />
        <!-- The animation style to use for the popup window. -->
        <attr name="popupAnimationStyle" format="reference" />
        <!-- Whether the popup window should overlap its anchor view. -->
        <attr name="overlapAnchor" format="boolean" />
        <!-- Transition used to move views into the popup window. -->
        <attr name="popupEnterTransition" format="reference" />
        <!-- Transition used to move views out of the popup window. -->
        <attr name="popupExitTransition" format="reference" />
    </declare-styleable>
    <declare-styleable name="ListPopupWindow">
        <!-- Amount of pixels by which the drop down should be offset vertically. -->
        <attr name="dropDownVerticalOffset" format="dimension" />
        <!-- Amount of pixels by which the drop down should be offset horizontally. -->
        <attr name="dropDownHorizontalOffset" format="dimension" />
    </declare-styleable>
    <declare-styleable name="ViewAnimator">
        <!-- Identifier for the animation to use when a view is shown. -->
        <attr name="inAnimation" format="reference" />
        <!-- Identifier for the animation to use when a view is hidden. -->
        <attr name="outAnimation" format="reference" />
        <!-- Defines whether to animate the current View when the ViewAnimation
             is first displayed. -->
        <attr name="animateFirstView" format="boolean" />
    </declare-styleable>
    <declare-styleable name="ViewFlipper">
        <attr name="flipInterval" format="integer" min="0" />
        <!-- When true, automatically start animating. -->
        <attr name="autoStart" format="boolean" />
    </declare-styleable>
    <declare-styleable name="AdapterViewAnimator">
        <!-- Identifier for the animation to use when a view is shown. -->
        <attr name="inAnimation" />
        <!-- Identifier for the animation to use when a view is hidden. -->
        <attr name="outAnimation" />
        <!--Defines whether the animator loops to the first view once it
        has reached the end of the list. -->
        <attr name="loopViews" format="boolean" />
        <!-- Defines whether to animate the current View when the ViewAnimation
        is first displayed. -->
        <attr name="animateFirstView" />
    </declare-styleable>
    <declare-styleable name="AdapterViewFlipper">
        <attr name="flipInterval" />
        <!-- When true, automatically start animating. -->
        <attr name="autoStart" />
    </declare-styleable>
    <declare-styleable name="ViewSwitcher">
    </declare-styleable>
    <declare-styleable name="ScrollView">
        <!-- Defines whether the scrollview should stretch its content to fill the viewport. -->
        <attr name="fillViewport" format="boolean" />
    </declare-styleable>
    <declare-styleable name="HorizontalScrollView">
        <!-- Defines whether the scrollview should stretch its content to fill the viewport. -->
        <attr name="fillViewport" />
    </declare-styleable>
    <declare-styleable name="Spinner">
        <!-- The prompt to display when the spinner's dialog is shown. -->
        <attr name="prompt" format="reference" />
        <!-- Display mode for spinner options. -->
        <attr name="spinnerMode" format="enum">
            <!-- Spinner options will be presented to the user as a dialog window. -->
            <enum name="dialog" value="0" />
            <!-- Spinner options will be presented to the user as an inline dropdown
                 anchored to the spinner widget itself. -->
            <enum name="dropdown" value="1" />
        </attr>
        <!-- List selector to use for spinnerMode="dropdown" display. -->
        <attr name="dropDownSelector" />
        <!-- Theme to use for the drop-down or dialog popup window. -->
        <attr name="popupTheme" />
        <!-- Background drawable to use for the dropdown in spinnerMode="dropdown". -->
        <attr name="popupBackground" />
        <!-- Window elevation to use for the dropdown in spinnerMode="dropdown". -->
        <attr name="popupElevation" />
        <!-- Width of the dropdown in spinnerMode="dropdown". -->
        <attr name="dropDownWidth" />
        <!-- Reference to a layout to use for displaying a prompt in the dropdown for
             spinnerMode="dropdown". This layout must contain a TextView with the id
             {@code @android:id/text1} to be populated with the prompt text. -->
        <attr name="popupPromptView" format="reference" />
        <!-- Gravity setting for positioning the currently selected item. -->
        <attr name="gravity" />
        <!-- Whether this spinner should mark child views as enabled/disabled when
             the spinner itself is enabled/disabled. -->
        <attr name="disableChildrenWhenDisabled" format="boolean" />
    </declare-styleable>

    <declare-styleable name="DatePicker">
        <!-- The first day of week according to {@link java.util.Calendar}. -->
        <attr name="firstDayOfWeek" />
        <!-- The minimal date shown by this calendar view in mm/dd/yyyy format. -->
        <attr name="minDate" format="string" />
        <!-- The maximal date shown by this calendar view in mm/dd/yyyy format. -->
        <attr name="maxDate" format="string" />

        <!-- Whether the spinners are shown. Only valid for "spinner" mode. -->
        <attr name="spinnersShown" format="boolean" />
        <!-- Whether the calendar view is shown. Only valid for "spinner" mode. -->
        <attr name="calendarViewShown" format="boolean" />

        <!-- @hide The layout of the date picker. -->
        <attr name="internalLayout" format="reference"  />
        <!-- @hide The layout of the legacy DatePicker. -->
        <attr name="legacyLayout" />

        <!-- The text color for the selected date header text, ex. "2014" or
             "Tue, Mar 18". This should be a color state list where the
             activated state will be used when the year picker or day picker is
             active.-->
        <attr name="headerTextColor" format="color" />
        <!-- The background for the selected date header. -->
        <attr name="headerBackground" />

        <!-- The list year's text appearance in the list.
             {@deprecated Use yearListTextColor. }-->
        <attr name="yearListItemTextAppearance" format="reference" />
        <!-- @hide The list year's text appearance in the list when activated. -->
        <attr name="yearListItemActivatedTextAppearance" format="reference" />
        <!-- The text color list of the calendar. -->
        <attr name="calendarTextColor" format="color" />

        <!-- Defines the look of the widget. Prior to the L release, the only choice was
             spinner. As of L, with the Material theme selected, the default layout is calendar,
             but this attribute can be used to force spinner to be used instead. -->
        <attr name="datePickerMode">
            <!-- Date picker with spinner controls to select the date. -->
            <enum name="spinner" value="1" />
            <!-- Date picker with calendar to select the date. -->
            <enum name="calendar" value="2" />
        </attr>

        <!-- The first year (inclusive), for example "1940".
             {@deprecated Use minDate instead.} -->
        <attr name="startYear" format="integer" />
        <!-- The last year (inclusive), for example "2010".
             {@deprecated Use maxDate instead.} -->
        <attr name="endYear" format="integer" />
        <!-- The text appearance for the month (ex. May) in the selected date header.
             {@deprecated Use headerTextColor instead.} -->
        <attr name="headerMonthTextAppearance" format="reference" />
        <!-- The text appearance for the day of month (ex. 28) in the selected date header.
             {@deprecated Use headerTextColor instead.} -->
        <attr name="headerDayOfMonthTextAppearance" format="reference" />
        <!-- The text appearance for the year (ex. 2014) in the selected date header.
             {@deprecated Use headerTextColor instead.} -->
        <attr name="headerYearTextAppearance" format="reference" />
        <!-- The background color for the header's day of week.
             {@deprecated No longer displayed.} -->
        <attr name="dayOfWeekBackground" format="color" />
        <!-- The text color for the header's day of week.
             {@deprecated No longer displayed.} -->
        <attr name="dayOfWeekTextAppearance" format="reference" />
        <!-- The list year's selected circle color in the list.
             {@deprecated No longer displayed.} -->
        <attr name="yearListSelectorColor" format="color" />

        <!-- @hide Whether this time picker is being displayed within a dialog,
             in which case it may ignore the requested time picker mode due to
             space considerations. -->
        <attr name="dialogMode" format="boolean" />
    </declare-styleable>

    <declare-styleable name="TwoLineListItem">
        <attr name="mode">
            <!-- Always show only the first line. -->
            <enum name="oneLine" value="1" />
            <!-- When selected show both lines, otherwise show only the first line.
                 This is the default mode. -->
            <enum name="collapsing" value="2" />
            <!-- Always show both lines. -->
            <enum name="twoLine" value="3" />
        </attr>
    </declare-styleable>

    <!-- SlidingDrawer specific attributes. These attributes are used to configure
         a SlidingDrawer from XML. -->
    <declare-styleable name="SlidingDrawer">
        <!-- Identifier for the child that represents the drawer's handle. -->
        <attr name="handle" format="reference" />
        <!-- Identifier for the child that represents the drawer's content. -->
        <attr name="content" format="reference" />
        <!-- Orientation of the SlidingDrawer. -->
        <attr name="orientation" />
        <!-- Extra offset for the handle at the bottom of the SlidingDrawer. -->
        <attr name="bottomOffset" format="dimension"  />
        <!-- Extra offset for the handle at the top of the SlidingDrawer. -->
        <attr name="topOffset" format="dimension"  />
        <!-- Indicates whether the drawer can be opened/closed by a single tap
             on the handle.  (If false, the user must drag or fling, or click
             using the trackball, to open/close the drawer.)  Default is true. -->
        <attr name="allowSingleTap" format="boolean" />
        <!-- Indicates whether the drawer should be opened/closed with an animation
             when the user clicks the handle. Default is true. -->
        <attr name="animateOnClick" format="boolean" />
    </declare-styleable>

    <!-- GestureOverlayView specific attributes. These attributes are used to configure
         a GestureOverlayView from XML. -->
    <declare-styleable name="GestureOverlayView">
        <!-- Width of the stroke used to draw the gesture. -->
        <attr name="gestureStrokeWidth" format="float" />
        <!-- Color used to draw a gesture. -->
        <attr name="gestureColor" format="color" />
        <!-- Color used to draw the user's strokes until we are sure it's a gesture. -->
        <attr name="uncertainGestureColor" format="color" />
        <!-- Time, in milliseconds, to wait before the gesture fades out after the user
             is done drawing it. -->
        <attr name="fadeOffset" format="integer" />
        <!-- Duration, in milliseconds, of the fade out effect after the user is done
             drawing a gesture. -->
        <attr name="fadeDuration" format="integer" />
        <!-- Defines the type of strokes that define a gesture. -->
        <attr name="gestureStrokeType">
            <!-- A gesture is made of only one stroke. -->
            <enum name="single" value="0" />
            <!-- A gesture is made of multiple strokes. -->
            <enum name="multiple" value="1" />
        </attr>
        <!-- Minimum length of a stroke before it is recognized as a gesture. -->
        <attr name="gestureStrokeLengthThreshold" format="float" />
        <!-- Squareness threshold of a stroke before it is recognized as a gesture. -->
        <attr name="gestureStrokeSquarenessThreshold" format="float" />
        <!-- Minimum curve angle a stroke must contain before it is recognized as a gesture. -->
        <attr name="gestureStrokeAngleThreshold" format="float" />
        <!-- Defines whether the overlay should intercept the motion events when a gesture
             is recognized. -->
        <attr name="eventsInterceptionEnabled" format="boolean" />
        <!-- Defines whether the gesture will automatically fade out after being recognized. -->
        <attr name="fadeEnabled" format="boolean" />
        <!-- Indicates whether horizontal (when the orientation is vertical) or vertical
             (when orientation is horizontal) strokes automatically define a gesture. -->
        <attr name="orientation" />
    </declare-styleable>

    <declare-styleable name="QuickContactBadge">
        <attr name="quickContactWindowSize">
            <enum name="modeSmall" value="1" />
            <enum name="modeMedium" value="2" />
            <enum name="modeLarge" value="3" />
        </attr>
    </declare-styleable>

    <!-- ======================================= -->
    <!-- Widget package parent layout attributes -->
    <!-- ======================================= -->
    <eat-comment />

    <declare-styleable name="AbsoluteLayout_Layout">
        <attr name="layout_x" format="dimension" />
        <attr name="layout_y" format="dimension" />
    </declare-styleable>
    <declare-styleable name="LinearLayout_Layout">
        <attr name="layout_width" />
        <attr name="layout_height" />
        <!-- Indicates how much of the extra space in the LinearLayout is
        allocated to the view associated with these LayoutParams. Specify
        0 if the view should not be stretched. Otherwise the extra pixels
        will be pro-rated among all views whose weight is greater than 0. -->
        <attr name="layout_weight" format="float" />
        <!-- Gravity specifies how a component should be placed in its group of cells.
        The default is {@link android.view.Gravity#TOP}.
        See {@link android.widget.LinearLayout#setGravity(int)}. -->
        <attr name="layout_gravity" />
    </declare-styleable>
    <declare-styleable name="GridLayout_Layout">
        <!-- The row boundary delimiting the top of the group of cells
        occupied by this view. -->
        <attr name="layout_row" format="integer" />
        <!-- The row span: the difference between the top and bottom
        boundaries delimiting the group of cells occupied by this view.
        The default is one.
        See {@link android.widget.GridLayout.Spec}. -->
        <attr name="layout_rowSpan" format="integer" min="1" />
        <!-- The relative proportion of vertical space that should be allocated to this view
        during excess space distribution. -->
        <attr name="layout_rowWeight" format="float" />
        <!-- The column boundary delimiting the left of the group of cells
        occupied by this view. -->
        <attr name="layout_column" />
        <!-- The column span: the difference between the right and left
        boundaries delimiting the group of cells occupied by this view.
        The default is one.
        See {@link android.widget.GridLayout.Spec}. -->
        <attr name="layout_columnSpan" format="integer" min="1" />
        <!-- The relative proportion of horizontal space that should be allocated to this view
        during excess space distribution. -->
        <attr name="layout_columnWeight" format="float" />
        <!-- Gravity specifies how a component should be placed in its group of cells.
        The default is LEFT | BASELINE.
        See {@link android.widget.GridLayout.LayoutParams#setGravity(int)}. -->
        <attr name="layout_gravity" />
    </declare-styleable>
    <declare-styleable name="FrameLayout_Layout">
        <attr name="layout_gravity" />
    </declare-styleable>
    <declare-styleable name="RelativeLayout_Layout">
        <!-- Positions the right edge of this view to the left of the given anchor view ID.
             Accommodates right margin of this view and left margin of anchor view. -->
        <attr name="layout_toLeftOf" format="reference" />
        <!-- Positions the left edge of this view to the right of the given anchor view ID.
            Accommodates left margin of this view and right margin of anchor view. -->
        <attr name="layout_toRightOf" format="reference" />
        <!-- Positions the bottom edge of this view above the given anchor view ID.
            Accommodates bottom margin of this view and top margin of anchor view. -->
        <attr name="layout_above" format="reference" />
        <!-- Positions the top edge of this view below the given anchor view ID.
            Accommodates top margin of this view and bottom margin of anchor view. -->
        <attr name="layout_below" format="reference" />
        <!-- Positions the baseline of this view on the baseline of the given anchor view ID. -->
        <attr name="layout_alignBaseline" format="reference" />
        <!-- Makes the left edge of this view match the left edge of the given anchor view ID.
            Accommodates left margin. -->
        <attr name="layout_alignLeft" format="reference" />
        <!-- Makes the top edge of this view match the top edge of the given anchor view ID.
            Accommodates top margin. -->
        <attr name="layout_alignTop" format="reference" />
        <!-- Makes the right edge of this view match the right edge of the given anchor view ID.
            Accommodates right margin. -->
        <attr name="layout_alignRight" format="reference" />
        <!-- Makes the bottom edge of this view match the bottom edge of the given anchor view ID.
            Accommodates bottom margin. -->
        <attr name="layout_alignBottom" format="reference" />
        <!-- If true, makes the left edge of this view match the left edge of the parent.
            Accommodates left margin. -->
        <attr name="layout_alignParentLeft" format="boolean" />
        <!-- If true, makes the top edge of this view match the top edge of the parent.
            Accommodates top margin. -->
        <attr name="layout_alignParentTop" format="boolean" />
        <!-- If true, makes the right edge of this view match the right edge of the parent.
            Accommodates right margin. -->
        <attr name="layout_alignParentRight" format="boolean" />
        <!-- If true, makes the bottom edge of this view match the bottom edge of the parent.
            Accommodates bottom margin. -->
        <attr name="layout_alignParentBottom" format="boolean" />
        <!-- If true, centers this child horizontally and vertically within its parent. -->
        <attr name="layout_centerInParent" format="boolean" />
        <!-- If true, centers this child horizontally within its parent. -->
        <attr name="layout_centerHorizontal" format="boolean" />
        <!-- If true, centers this child vertically within its parent. -->
        <attr name="layout_centerVertical" format="boolean" />
        <!-- 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. -->
        <attr name="layout_alignWithParentIfMissing" format="boolean" />
        <!-- Positions the end edge of this view to the start of the given anchor view ID.
             Accommodates end margin of this view and start margin of anchor view. -->
        <attr name="layout_toStartOf" format="reference" />
        <!-- Positions the start edge of this view to the end of the given anchor view ID.
             Accommodates start margin of this view and end margin of anchor view. -->
        <attr name="layout_toEndOf" format="reference" />
        <!-- Makes the start edge of this view match the start edge of the given anchor view ID.
            Accommodates start margin. -->
        <attr name="layout_alignStart" format="reference" />
        <!-- Makes the end edge of this view match the end edge of the given anchor view ID.
            Accommodates end margin. -->
        <attr name="layout_alignEnd" format="reference" />
        <!-- If true, makes the start edge of this view match the start edge of the parent.
            Accommodates start margin. -->
        <attr name="layout_alignParentStart" format="boolean" />
        <!-- If true, makes the end edge of this view match the end edge of the parent.
            Accommodates end margin. -->
        <attr name="layout_alignParentEnd" format="boolean" />
    </declare-styleable>
    <declare-styleable name="VerticalSlider_Layout">
        <attr name="layout_scale" format="float" />
    </declare-styleable>

    <!-- @hide -->
    <declare-styleable name="WeightedLinearLayout">
        <attr name="majorWeightMin" format="float" />
        <attr name="minorWeightMin" format="float" />
        <attr name="majorWeightMax" format="float" />
        <attr name="minorWeightMax" format="float" />
    </declare-styleable>

    <declare-styleable name="CalendarView">
        <!-- The first day of week according to {@link java.util.Calendar}. -->
        <attr name="firstDayOfWeek" format="integer" />
        <!-- The minimal date shown by this calendar view in mm/dd/yyyy format. -->
        <attr name="minDate" />
        <!-- The maximal date shown by this calendar view in mm/dd/yyyy format. -->
        <attr name="maxDate" />
        <!-- The text appearance for the month and year in the calendar header. -->
        <attr name="monthTextAppearance" format="reference" />
        <!-- The text appearance for the week day abbreviation in the calendar header. -->
        <attr name="weekDayTextAppearance" format="reference" />
        <!-- The text appearance for the day numbers in the calendar grid. -->
        <attr name="dateTextAppearance" format="reference" />
        <!-- @hide The background color used for the day selection indicator. -->
        <attr name="daySelectorColor" format="color" />
        <!-- @hide The background color used for the day highlight indicator. -->
        <attr name="dayHighlightColor" format="color" />
        <!-- @hide Which style of calendar delegate to use. -->
        <attr name="calendarViewMode">
            <enum name="holo" value="0" />
            <enum name="material" value="1" />
        </attr>

        <!-- @deprecated Whether do show week numbers. -->
        <attr name="showWeekNumber" format="boolean" />
        <!-- @deprecated The number of weeks to be shown. -->
        <attr name="shownWeekCount" format="integer"/>
        <!-- @deprecated The background color for the selected week. -->
        <attr name="selectedWeekBackgroundColor" format="color|reference" />
        <!-- @deprecated The color for the dates of the focused month. -->
        <attr name="focusedMonthDateColor" format="color|reference" />
        <!-- @deprecated The color for the dates of an unfocused month. -->
        <attr name="unfocusedMonthDateColor" format="color|reference" />
        <!-- @deprecated The color for the week numbers. -->
        <attr name="weekNumberColor" format="color|reference" />
        <!-- @deprecated The color for the separator line between weeks. -->
        <attr name="weekSeparatorLineColor" format="color|reference" />
        <!-- @deprecated Drawable for the vertical bar shown at the beginning and at the end of the selected date. -->
        <attr name="selectedDateVerticalBar" format="reference" />
    </declare-styleable>

    <declare-styleable name="NumberPicker">
        <!-- @hide Color for the solid color background if such for optimized rendering. -->
        <attr name="solidColor" format="color|reference" />
        <!-- @hide The divider for making the selection area. -->
        <attr name="selectionDivider" format="reference" />
        <!-- @hide The height of the selection divider. -->
        <attr name="selectionDividerHeight" format="dimension" />
        <!-- @hide The distance between the two selection dividers. -->
        <attr name="selectionDividersDistance" format="dimension" />
        <!-- @hide The min height of the NumberPicker. -->
        <attr name="internalMinHeight" format="dimension" />
        <!-- @hide The max height of the NumberPicker. -->
        <attr name="internalMaxHeight" format="dimension" />
        <!-- @hide The min width of the NumberPicker. -->
        <attr name="internalMinWidth" format="dimension" />
        <!-- @hide The max width of the NumberPicker. -->
        <attr name="internalMaxWidth" format="dimension" />
        <!-- @hide The layout of the number picker. -->
        <attr name="internalLayout" />
        <!-- @hide The drawable for pressed virtual (increment/decrement) buttons. -->
        <attr name="virtualButtonPressedDrawable" format="reference"/>
        <!-- @hide If true then the selector wheel is hidden until the picker has focus. -->
        <attr name="hideWheelUntilFocused" format="boolean"/>
    </declare-styleable>

    <declare-styleable name="TimePicker">
        <!-- @hide The layout of the legacy time picker. -->
        <attr name="legacyLayout" format="reference" />
        <!-- @hide The layout of the time picker. -->
        <attr name="internalLayout" />

        <!-- The text color for the selected time header text, ex. "12" or
             "PM". This should be a color state list where the activated state
             will be used when the minute picker or hour picker is active.-->
        <attr name="headerTextColor" />
        <!-- The background for the header containing the currently selected time. -->
        <attr name="headerBackground" />

        <!-- The color for the hours/minutes numbers. This should be a color
             state list where the activated state will be used when the number
             is active.-->
        <attr name="numbersTextColor" format="color" />
        <!-- The color for the inner hours numbers used in 24-hour mode. This
             should be a color state list where the activated state will be
             used when the number is active.-->
        <attr name="numbersInnerTextColor" format="color" />
        <!-- The background color for the hours/minutes numbers. -->
        <attr name="numbersBackgroundColor" format="color" />
        <!-- The color for the hours/minutes selector. -->
        <attr name="numbersSelectorColor" format="color" />

        <!-- Defines the look of the widget. Prior to the L release, the only choice was
             spinner. As of L, with the Material theme selected, the default layout is clock,
             but this attribute can be used to force spinner to be used instead. -->
        <attr name="timePickerMode">
            <!-- Time picker with spinner controls to select the time. -->
            <enum name="spinner" value="1" />
            <!-- Time picker with clock face to select the time. -->
            <enum name="clock" value="2" />
        </attr>

        <!-- The text appearance for the AM/PM header.
             @deprecated Use headerTextColor instead. -->
        <attr name="headerAmPmTextAppearance" format="reference" />
        <!-- The text appearance for the time header.
             @deprecated Use headerTextColor instead. -->
        <attr name="headerTimeTextAppearance" format="reference" />
        <!-- The color for the AM/PM selectors.
             {@deprecated Use headerTextColor instead.}-->
        <attr name="amPmTextColor" format="color" />
        <!-- The background color state list for the AM/PM selectors.
             {@deprecated Use headerBackground instead.}-->
        <attr name="amPmBackgroundColor" format="color" />

        <!-- @hide Whether this time picker is being displayed within a dialog,
             in which case it may ignore the requested time picker mode due to
             space considerations. -->
        <attr name="dialogMode" />
    </declare-styleable>

    <!-- ========================= -->
    <!-- Drawable class attributes -->
    <!-- ========================= -->
    <eat-comment />

    <!-- Base attributes that are available to all Drawable objects. -->
    <declare-styleable name="Drawable">
        <!-- Provides initial visibility state of the drawable; the default
             value is false.  See
             {@link android.graphics.drawable.Drawable#setVisible}. -->
        <attr name="visible" format="boolean" />
        <!-- Indicates if the drawable needs to be mirrored when its layout direction is
             RTL (right-to-left).  See
             {@link android.graphics.drawable.Drawable#setAutoMirrored}. -->
        <attr name="autoMirrored" format="boolean" />
    </declare-styleable>

    <!-- Drawable class used to wrap other drawables. -->
    <declare-styleable name="DrawableWrapper">
        <!-- The wrapped drawable. -->
        <attr name="drawable" />
    </declare-styleable>

    <!-- Drawable used to render several states. Each state is represented by
         a child drawable. -->
    <declare-styleable name="StateListDrawable">
        <!-- Indicates whether the drawable should be initially visible. -->
        <attr name="visible" />
        <!-- If true, allows the drawable's padding to change based on the
             current state that is selected.  If false, the padding will
             stay the same (based on the maximum padding of all the states).
             Enabling this feature requires that the owner of the drawable
             deal with performing layout when the state changes, which is
             often not supported. -->
        <attr name="variablePadding" format="boolean" />
        <!-- If true, the drawable's reported internal size will remain
             constant as the state changes; the size is the maximum of all
             of the states.  If false, the size will vary based on the
             current state. -->
        <attr name="constantSize" format="boolean" />
        <!-- Enables or disables dithering of the bitmap if the bitmap does not have the
             same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with
             an RGB 565 screen). -->
        <attr name="dither" format="boolean" />
        <!-- Amount of time (in milliseconds) to fade in a new state drawable. -->
        <attr name="enterFadeDuration" format="integer" />
        <!-- Amount of time (in milliseconds) to fade out an old state drawable. -->
        <attr name="exitFadeDuration" format="integer" />
        <!-- Indicates if the drawable needs to be mirrored when its layout direction is
             RTL (right-to-left). -->
        <attr name="autoMirrored"/>
    </declare-styleable>

    <!-- Drawable used to render several states with animated transitions. Each state
         is represented by a child drawable with an optional keyframe ID. -->
    <declare-styleable name="AnimatedStateListDrawable">
        <!-- Indicates whether the drawable should be initially visible. -->
        <attr name="visible" />
        <!-- If true, allows the drawable's padding to change based on the
             current state that is selected.  If false, the padding will
             stay the same (based on the maximum padding of all the states).
             Enabling this feature requires that the owner of the drawable
             deal with performing layout when the state changes, which is
             often not supported. -->
        <attr name="variablePadding" />
        <!-- If true, the drawable's reported internal size will remain
             constant as the state changes; the size is the maximum of all
             of the states.  If false, the size will vary based on the
             current state. -->
        <attr name="constantSize" />
        <!-- Enables or disables dithering of the bitmap if the bitmap does not have the
             same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with
             an RGB 565 screen). -->
        <attr name="dither" />
        <!-- Amount of time (in milliseconds) to fade in a new state drawable. -->
        <attr name="enterFadeDuration" />
        <!-- Amount of time (in milliseconds) to fade out an old state drawable. -->
        <attr name="exitFadeDuration" />
        <!-- Indicates if the drawable needs to be mirrored when its layout direction is
             RTL (right-to-left). -->
        <attr name="autoMirrored"/>
    </declare-styleable>

    <!-- Represents a single state inside a StateListDrawable. -->
    <declare-styleable name="StateListDrawableItem">
        <!-- Reference to a drawable resource to use for the state. If not
             given, the drawable must be defined by the first child tag. -->
        <attr name="drawable" />
    </declare-styleable>

    <!-- Transition used to animate between states with keyframe IDs. -->
    <declare-styleable name="AnimatedStateListDrawableItem">
        <!-- Reference to a drawable resource to use for the frame.  If not
             given, the drawable must be defined by the first child tag. -->
        <attr name="drawable" />
        <!-- Keyframe identifier for use in specifying transitions. -->
        <attr name="id" />
    </declare-styleable>

    <!-- Transition used to animate between states with keyframe IDs. -->
    <declare-styleable name="AnimatedStateListDrawableTransition">
        <!-- Keyframe identifier for the starting state. -->
        <attr name="fromId" format="reference" />
        <!-- Keyframe identifier for the ending state. -->
        <attr name="toId" format="reference" />
        <!-- Reference to a animation drawable resource to use for the frame.  If not
             given, the animation drawable must be defined by the first child tag. -->
        <attr name="drawable" />
        <!-- Whether this transition is reversible. -->
        <attr name="reversible" format="boolean" />
    </declare-styleable>

    <!-- Drawable used to render several animated frames. -->
    <declare-styleable name="AnimationDrawable">
        <attr name="visible" />
        <attr name="variablePadding" />
        <!-- If true, the animation will only run a single time and then
             stop.  If false (the default), it will continually run,
             restarting at the first frame after the last has finished. -->
        <attr name="oneshot" format="boolean" />
    </declare-styleable>

    <!-- Represents a single frame inside an AnimationDrawable. -->
    <declare-styleable name="AnimationDrawableItem">
        <!-- Amount of time (in milliseconds) to display this frame. -->
        <attr name="duration" format="integer" />
        <!-- Reference to a drawable resource to use for the frame.  If not
             given, the drawable must be defined by the first child tag. -->
        <attr name="drawable" format="reference" />
    </declare-styleable>

    <!-- Attributes that can be assigned to a StateListAnimator item. -->
    <declare-styleable name="StateListAnimatorItem">
        <attr name="animation"/>
    </declare-styleable>

    <!-- Attributes that can be assigned to a ColorStateList item. -->
    <declare-styleable name="ColorStateListItem">
        <!-- Base color for this state. -->
        <attr name="color" />
        <!-- Alpha multiplier applied to the base color. -->
        <attr name="alpha" />
    </declare-styleable>

    <!-- Drawable used to render according to the animation scale. Esp. when it is 0 due to battery
         saver mode. It should contain one animatable drawable and one static drawable.
         @hide -->
    <declare-styleable name="AnimationScaleListDrawable">
    </declare-styleable>

    <!-- Attributes that can be assigned to a AnimationScaleListDrawable item.
         @hide -->
    <declare-styleable name="AnimationScaleListDrawableItem">
        <!-- Reference to a drawable resource to use for the state. If not
             given, the drawable must be defined by the first child tag. -->
        <attr name="drawable" />
    </declare-styleable>


    <!-- Drawable used to render a geometric shape, with a gradient or a solid color. -->
    <declare-styleable name="GradientDrawable">
        <!-- Indicates whether the drawable should intially be visible. -->
        <attr name="visible" />
        <!-- Enables or disables dithering. -->
        <attr name="dither" />
        <!-- Indicates what shape to fill with a gradient. -->
        <attr name="shape">
            <!-- Rectangle shape, with optional rounder corners. -->
            <enum name="rectangle" value="0" />
            <!-- Oval shape. -->
            <enum name="oval" value="1" />
            <!-- Line shape. -->
            <enum name="line" value="2" />
            <!-- Ring shape. -->
            <enum name="ring" value="3" />
        </attr>
        <!-- Inner radius of the ring expressed as a ratio of the ring's width. For instance,
             if innerRadiusRatio=9, then the inner radius equals the ring's width divided by 9.
             This value is ignored if innerRadius is defined. Default value is 9. -->
        <attr name="innerRadiusRatio" format="float" />
        <!-- Thickness of the ring expressed as a ratio of the ring's width. For instance,
             if thicknessRatio=3, then the thickness equals the ring's width divided by 3.
             This value is ignored if innerRadius is defined. Default value is 3. -->
        <attr name="thicknessRatio" format="float" />
        <!-- Inner radius of the ring. When defined, innerRadiusRatio is ignored. -->
        <attr name="innerRadius" format="dimension" />
        <!-- Thickness of the ring. When defined, thicknessRatio is ignored. -->
        <attr name="thickness" format="dimension" />
        <!-- Whether the drawable level value (see
             {@link android.graphics.drawable.Drawable#getLevel()}) is used to scale the shape.
             Scaling behavior depends on the shape type. For "ring", the angle is scaled from 0 to
             360. For all other types, there is no effect. The default value is true. -->
        <attr name="useLevel" />
        <!-- If set, specifies the color to apply to the drawable as a tint. By default,
             no tint is applied. May be a color state list. -->
        <attr name="tint" />
        <!-- When a tint color is set, specifies its Porter-Duff blending mode. The
             default value is src_in, which treats the drawable as an alpha mask. -->
        <attr name="tintMode" />
        <!-- Left optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetLeft" />
        <!-- Top optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetTop" />
        <!-- Right optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetRight" />
        <!-- Bottom optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetBottom" />
    </declare-styleable>

    <!-- Used to specify the size of the shape for GradientDrawable. -->
    <declare-styleable name="GradientDrawableSize">
        <!-- Width of the gradient shape. -->
        <attr name="width" />
        <!-- Height of the gradient shape. -->
        <attr name="height" />
    </declare-styleable>

    <!-- Used to describe the gradient used to fill the shape of a GradientDrawable. -->
    <declare-styleable name="GradientDrawableGradient">
        <!-- Start color of the gradient. -->
        <attr name="startColor" format="color" />
        <!-- Optional center color. For linear gradients, use centerX or centerY to place the center
             color. -->
        <attr name="centerColor" format="color" />
        <!-- End color of the gradient. -->
        <attr name="endColor" format="color" />
        <!-- Whether the drawable level value (see
             {@link android.graphics.drawable.Drawable#getLevel()}) is used to scale the gradient.
             Scaling behavior varies based on gradient type. For "linear", adjusts the ending
             position along the gradient's axis of orientation. For "radial", adjusts the outer
             radius. For "sweep", adjusts the ending angle. The default value is false. -->
        <attr name="useLevel" format="boolean" />
        <!-- Angle of the gradient, used only with linear gradient. Must be a multiple of 45 in the
             range [0, 315]. -->
        <attr name="angle" format="float" />
        <!-- Type of gradient. The default type is linear. -->
        <attr name="type">
            <!-- Linear gradient extending across the center point. -->
            <enum name="linear" value="0" />
            <!-- Radial gradient extending from the center point outward. -->
            <enum name="radial" value="1" />
            <!-- Sweep (or angular) gradient sweeping counter-clockwise around the center point. -->
            <enum name="sweep"  value="2" />
        </attr>
        <!-- X-position of the center point of the gradient within the shape as a fraction of the
             width. The default value is 0.5. -->
        <attr name="centerX" format="float|fraction" />
        <!-- Y-position of the center point of the gradient within the shape as a fraction of the
             height. The default value is 0.5. -->
        <attr name="centerY" format="float|fraction" />
        <!-- Radius of the gradient, used only with radial gradient. May be an explicit dimension
             or a fractional value relative to the shape's minimum dimension. -->
        <attr name="gradientRadius" format="float|fraction|dimension" />
    </declare-styleable>

    <!-- Used to fill the shape of GradientDrawable with a solid color. -->
    <declare-styleable name="GradientDrawableSolid">
        <!-- Solid color for the gradient shape. -->
        <attr name="color" format="color" />
    </declare-styleable>

    <!-- Used to describe the optional stroke of a GradientDrawable. -->
    <declare-styleable name="GradientDrawableStroke">
        <!-- Width of the gradient shape's stroke. -->
        <attr name="width" />
        <!-- Color of the gradient shape's stroke. -->
        <attr name="color" />
        <!-- Length of a dash in the stroke. -->
        <attr name="dashWidth" format="dimension" />
        <!-- Gap between dashes in the stroke. -->
        <attr name="dashGap" format="dimension" />
    </declare-styleable>

    <!-- Describes the corners for the rectangle shape of a GradientDrawable.
         This can be used to render rounded corners. -->
    <declare-styleable name="DrawableCorners">
        <!-- Defines the radius of the four corners. -->
        <attr name="radius" format="dimension" />
        <!-- Radius of the top left corner. -->
        <attr name="topLeftRadius" format="dimension" />
        <!-- Radius of the top right corner. -->
        <attr name="topRightRadius" format="dimension" />
        <!-- Radius of the bottom left corner. -->
        <attr name="bottomLeftRadius" format="dimension" />
        <!-- Radius of the bottom right corner. -->
        <attr name="bottomRightRadius" format="dimension" />
    </declare-styleable>

    <!-- Used to specify the optional padding of a GradientDrawable. -->
    <declare-styleable name="GradientDrawablePadding">
        <!-- Amount of left padding inside the gradient shape. -->
        <attr name="left" format="dimension" />
        <!-- Amount of top padding inside the gradient shape. -->
        <attr name="top" format="dimension" />
        <!-- Amount of right padding inside the gradient shape. -->
        <attr name="right" format="dimension" />
        <!-- Amount of bottom padding inside the gradient shape. -->
        <attr name="bottom" format="dimension" />
    </declare-styleable>

    <!-- Drawable used to render several drawables stacked on top of each other.
         Each child drawable can be controlled individually. -->
    <declare-styleable name="LayerDrawable">
        <!-- Indicates the opacity of the layer. This can be useful to allow the
              system to enable drawing optimizations. The default value is
              translucent. -->
        <attr name="opacity">
            <!-- Indicates that the layer is opaque and contains no transparent
                 nor translucent pixels. -->
            <enum name="opaque" value="-1" />
            <!-- The layer is completely transparent (no pixel will be drawn). -->
            <enum name="transparent" value="-2" />
            <!-- The layer has translucent pixels. -->
            <enum name="translucent" value="-3" />
        </attr>
        <!-- Indicates if the drawable needs to be mirrored when its layout direction is
             RTL (right-to-left). -->
        <attr name="autoMirrored" />
        <!-- Indicates how layer padding should affect the bounds of subsequent layers.
             The default padding mode value is nest. -->
        <attr name="paddingMode">
            <!-- Nest each layer inside the padding of the previous layer. -->
            <enum name="nest" value="0" />
            <!-- Stack each layer directly atop the previous layer. -->
            <enum name="stack" value="1" />
        </attr>
        <!-- Explicit top padding. Overrides child padding. -->
        <attr name="paddingTop" />
        <!-- Explicit bottom padding. Overrides child padding. -->
        <attr name="paddingBottom" />
        <!-- Explicit left padding. Overrides child padding. -->
        <attr name="paddingLeft" />
        <!-- Explicit right padding. Overrides child padding. -->
        <attr name="paddingRight" />
        <!-- Explicit start padding. Overrides child padding. Takes precedence
             over absolute padding (for example, left when layout direction is LTR). -->
        <attr name="paddingStart" />
        <!-- Explicit end padding. Overrides child padding. Takes precedence
             over absolute padding (for example, right when layout direction is LTR). -->
        <attr name="paddingEnd" />
    </declare-styleable>

    <!-- Describes an item (or child) of a LayerDrawable. -->
    <declare-styleable name="LayerDrawableItem">
        <!-- Left inset to apply to the layer. -->
        <attr name="left" />
        <!-- Top inset to apply to the layer. -->
        <attr name="top" />
        <!-- Right inset to apply to the layer. -->
        <attr name="right" />
        <!-- Bottom inset to apply to the layer. -->
        <attr name="bottom" />
        <!-- Start inset to apply to the layer. Overrides {@code left} or
             {@code right} depending on layout direction. -->
        <attr name="start" format="dimension" />
        <!-- End inset to apply to the layer. Overrides {@code left} or
             {@code right} depending on layout direction. -->
        <attr name="end" format="dimension" />
        <!-- Width of the layer. Defaults to the layer's intrinsic width. -->
        <attr name="width" />
        <!-- Height of the layer. Defaults to the layer's intrinsic height. -->
        <attr name="height" />
        <!-- Gravity used to align the layer within its container. If no value
             is specified, the default behavior depends on whether an explicit
             width or height has been set, If no dimension is set, gravity in
             that direction defaults to {@code fill_horizontal} or
             {@code fill_vertical}; otherwise, it defaults to {@code left} or
             {@code top}. -->
        <attr name="gravity" />
        <!-- Drawable used to render the layer. -->
        <attr name="drawable" />
        <!-- Identifier of the layer. This can be used to retrieve the layer
             from a drawable container. -->
        <attr name="id" />
    </declare-styleable>

    <declare-styleable name="LevelListDrawableItem">
        <!-- The minimum level allowed for this item. -->
        <attr name="minLevel" format="integer" />
        <!-- The maximum level allowed for this item. -->
        <attr name="maxLevel" format="integer" />
        <attr name="drawable" />
    </declare-styleable>

    <!-- Drawable used to rotate another drawable. -->
    <declare-styleable name="RotateDrawable">
        <attr name="visible" />
        <attr name="fromDegrees" format="float" />
        <attr name="toDegrees" format="float" />
        <attr name="pivotX" format="float|fraction" />
        <attr name="pivotY" format="float|fraction" />
        <attr name="drawable" />
    </declare-styleable>

    <declare-styleable name="AnimatedRotateDrawable">
        <attr name="visible" />
        <attr name="frameDuration" format="integer" />
        <attr name="framesCount" format="integer" />
        <attr name="pivotX" />
        <attr name="pivotY" />
        <attr name="drawable" />
    </declare-styleable>

    <!-- Drawable used to render the Material progress indicator. -->
    <declare-styleable name="MaterialProgressDrawable">
        <attr name="visible" />
        <attr name="thickness" />
        <attr name="innerRadius" />
        <attr name="width" />
        <attr name="height" />
        <attr name="color" />
    </declare-styleable>

    <!-- Drawable used to wrap and inset another drawable. -->
    <declare-styleable name="InsetDrawable">
        <attr name="visible" />
        <attr name="drawable" />
        <attr name="inset"  format="fraction|dimension"/>
        <attr name="insetLeft" format="fraction|dimension" />
        <attr name="insetRight" format="fraction|dimension" />
        <attr name="insetTop" format="fraction|dimension" />
        <attr name="insetBottom" format="fraction|dimension" />
    </declare-styleable>

    <!-- Drawable used to draw bitmaps. -->
    <declare-styleable name="BitmapDrawable">
        <!-- Identifier of the bitmap file. This attribute is mandatory. -->
        <attr name="src" />
        <!-- Enables or disables antialiasing. Antialiasing can be used to smooth the
             edges of a bitmap when rotated. Default value is false. -->
        <attr name="antialias" format="boolean" />
        <!-- Enables or disables bitmap filtering. Filtering is used when the bitmap is
             shrunk or stretched to smooth its apperance. Default value is true. -->
        <attr name="filter" format="boolean" />
        <!-- Enables or disables dithering of the bitmap if the bitmap does not have the
             same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with
             an RGB 565 screen). Default value is true. -->
        <attr name="dither" />
        <!-- Defines the gravity for the bitmap. The gravity indicates where to position
             the drawable in its container if the bitmap is smaller than the container. -->
        <attr name="gravity" />
        <!-- Defines the tile mode. When the tile mode is enabled, the bitmap is repeated.
             Gravity is ignored when the tile mode is enabled. Default value is "disabled". -->
        <attr name="tileMode">
            <!-- Do not tile the bitmap. This is the default value. -->
            <enum name="disabled" value="-1" />
            <!-- Replicates the edge color. -->
            <enum name="clamp" value="0" />
            <!-- Repeats the bitmap in both direction. -->
            <enum name="repeat" value="1" />
            <!-- Repeats the shader's image horizontally and vertically, alternating
                 mirror images so that adjacent images always seam. -->
            <enum name="mirror" value="2" />
        </attr>
        <!-- Defines the horizontal tile mode. When the tile mode is enabled, the bitmap is repeated.
             Gravity is ignored when the tile mode is enabled. Default value is "disabled". -->
        <attr name="tileModeX">
            <!-- Do not tile the bitmap. This is the default value. -->
            <enum name="disabled" value="-1" />
            <!-- Replicates the edge color. -->
            <enum name="clamp" value="0" />
            <!-- Repeats the bitmap horizontally. -->
            <enum name="repeat" value="1" />
            <!-- Repeats the shader's image horizontally, alternating
                 mirror images so that adjacent images always seam. -->
            <enum name="mirror" value="2" />
        </attr>
        <!-- Defines the vertical tile mode. When the tile mode is enabled, the bitmap is repeated.
             Gravity is ignored when the tile mode is enabled. Default value is "disabled". -->
        <attr name="tileModeY">
            <!-- Do not tile the bitmap. This is the default value. -->
            <enum name="disabled" value="-1" />
            <!-- Replicates the edge color. -->
            <enum name="clamp" value="0" />
            <!-- Repeats the bitmap vertically. -->
            <enum name="repeat" value="1" />
            <!-- Repeats the shader's image vertically, alternating
                 mirror images so that adjacent images always seam. -->
            <enum name="mirror" value="2" />
        </attr>
        <!-- Enables or disables the mipmap hint. See
            {@link android.graphics.Bitmap#setHasMipMap(boolean)} for more information.
            Default value is false. -->
        <attr name="mipMap" format="boolean" />
        <!-- Indicates if the drawable needs to be mirrored when its layout direction is
             RTL (right-to-left). -->
        <attr name="autoMirrored" />
        <!-- If set, specifies the color to apply to the drawable as a tint. By default,
             no tint is applied. May be a color state list. -->
        <attr name="tint" />
        <!-- When a tint color is set, specifies its Porter-Duff blending mode. The
             default value is src_in, which treats the drawable as an alpha mask. -->
        <attr name="tintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
        <!-- Specifies the alpha multiplier to apply to the base drawable. -->
        <attr name="alpha" />
    </declare-styleable>

    <!-- Drawable used to draw 9-patches. -->
    <declare-styleable name="NinePatchDrawable">
        <!-- Identifier of the bitmap file. This attribute is mandatory. -->
        <attr name="src" />
        <!-- Enables or disables dithering of the bitmap if the bitmap does not have the
             same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with
             an RGB 565 screen). -->
        <attr name="dither" />
        <!-- Indicates if the drawable needs to be mirrored when its layout direction is
             RTL (right-to-left). -->
        <attr name="autoMirrored" />
        <!-- If set, specifies the color to apply to the drawable as a tint. By default,
             no tint is applied. May be a color state list. -->
        <attr name="tint" />
        <!-- When a tint color is set, specifies its Porter-Duff blending mode. The
             default value is src_in, which treats the drawable as an alpha mask. -->
        <attr name="tintMode" />
        <!-- Specifies the alpha multiplier to apply to the base drawable. -->
        <attr name="alpha" />
    </declare-styleable>

    <!-- Drawable used to draw a single color. -->
    <declare-styleable name="ColorDrawable">
        <!-- The color to use. -->
        <attr name="color" />
    </declare-styleable>

    <!-- Drawable used to draw adaptive icons with foreground and background layers. -->
    <declare-styleable name="AdaptiveIconDrawableLayer">
        <!-- The drawable to use for the layer. -->
        <attr name="drawable" />
     </declare-styleable>

    <!-- Drawable used to show animated touch feedback. -->
    <declare-styleable name="RippleDrawable">
        <!-- The color to use for ripple effects. This attribute is required. -->
        <attr name="color" />
        <!-- The radius of the ripple when fully expanded. By default, the
             radius is computed based on the size of the ripple's container. -->
        <attr name="radius" />
    </declare-styleable>

    <declare-styleable name="ScaleDrawable">
        <!-- Scale width, expressed as a percentage of the drawable's bound. The value's
             format is XX%. For instance: 100%, 12.5%, etc.-->
        <attr name="scaleWidth" format="string" />
        <!-- Scale height, expressed as a percentage of the drawable's bound. The value's
             format is XX%. For instance: 100%, 12.5%, etc.-->
        <attr name="scaleHeight" format="string" />
        <!-- Specifies where the drawable is positioned after scaling. The default value is
             left. -->
        <attr name="scaleGravity">
            <!-- 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>
        <!-- Specifies the initial drawable level in the range 0 to 10000. -->
        <attr name="level" format="integer" />
        <!-- Reference to a drawable resource to draw with the specified scale. -->
        <attr name="drawable" />
        <!-- Use the drawable's intrinsic width and height as minimum size values.
             Useful if the target drawable is a 9-patch or otherwise should not be scaled
             down beyond a minimum size. -->
        <attr name="useIntrinsicSizeAsMinimum" format="boolean" />
    </declare-styleable>

    <declare-styleable name="ClipDrawable">
        <!-- The orientation for the clip. -->
        <attr name="clipOrientation">
            <!-- Clip the drawable horizontally. -->
            <flag name="horizontal" value="1" />
            <!-- Clip the drawable vertically. -->
            <flag name="vertical" value="2" />
        </attr>
        <!-- Specifies where to clip within the drawable. The default value is
             left. -->
        <attr name="gravity" />
        <!-- Reference to a drawable resource to draw with the specified scale. -->
        <attr name="drawable" />
    </declare-styleable>

    <!-- Defines the padding of a ShapeDrawable. -->
    <declare-styleable name="ShapeDrawablePadding">
        <!-- Left padding. -->
        <attr name="left" />
        <!-- Top padding. -->
        <attr name="top" />
        <!-- Right padding. -->
        <attr name="right" />
        <!-- Bottom padding. -->
        <attr name="bottom" />
    </declare-styleable>

    <!-- Drawable used to draw shapes. -->
    <declare-styleable name="ShapeDrawable">
        <!-- Defines the color of the shape. -->
        <attr name="color" />
        <!-- Defines the width of the shape. -->
        <attr name="width" />
        <!-- Defines the height of the shape. -->
        <attr name="height" />
        <!-- Enables or disables dithering. -->
        <attr name="dither" />
        <!-- If set, specifies the color to apply to the drawable as a tint. By default,
             no tint is applied. May be a color state list. -->
        <attr name="tint" />
        <!-- When a tint color is set, specifies its Porter-Duff blending mode. The
             default value is src_in, which treats the drawable as an alpha mask. -->
        <attr name="tintMode" />
    </declare-styleable>

    <!-- ========================== -->
    <!--   VectorDrawable class   -->
    <!-- ========================== -->
    <eat-comment />

    <!-- Drawable used to draw vector paths. -->
    <declare-styleable name="VectorDrawable">
        <!-- If set, specifies the color to apply to the drawable as a tint. By default,
             no tint is applied. May be a color state list. -->
        <attr name="tint" />
        <!-- When a tint color is set, specifies its Porter-Duff blending mode. The
             default value is src_in, which treats the drawable as an alpha mask. -->
        <attr name="tintMode" />
        <!-- Indicates if the drawable needs to be mirrored when its layout direction is
             RTL (right-to-left). -->
        <attr name="autoMirrored" />
        <!-- The intrinsic width of the Vector Drawable. -->
        <attr name="width" />
        <!-- The intrinsic height of the Vector Drawable. -->
        <attr name="height" />
        <!-- The width of the canvas the drawing is on. -->
        <attr name="viewportWidth" format="float"/>
        <!-- The height of the canvas the drawing is on. -->
        <attr name="viewportHeight" format="float"/>
        <!-- The name of this vector drawable. -->
        <attr name="name" />
        <!-- The opacity of the whole vector drawable, as a value between 0
             (completely transparent) and 1 (completely opaque). -->
        <attr name="alpha" />
        <!-- Left optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetLeft" format="dimension" />
        <!-- Top optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetTop" format="dimension" />
        <!-- Right optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetRight" format="dimension" />
        <!-- Bottom optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetBottom" format="dimension" />
    </declare-styleable>

    <!-- Defines the group used in VectorDrawables. -->
    <declare-styleable name="VectorDrawableGroup">
        <!-- The name of this group. -->
        <attr name="name" />
        <!-- The amount to rotate the group. -->
        <attr name="rotation" />
        <!-- The X coordinate of the center of rotation of a group. -->
        <attr name="pivotX" />
        <!-- The Y coordinate of the center of rotation of a group. -->
        <attr name="pivotY" />
        <!-- The amount to translate the group on X coordinate. -->
        <attr name="translateX" format="float"/>
        <!-- The amount to translate the group on Y coordinate. -->
        <attr name="translateY" format="float"/>
        <!-- The amount to scale the group on X coordinate. -->
        <attr name="scaleX" />
        <!-- The amount to scale the group on X coordinate. -->
        <attr name="scaleY" />
    </declare-styleable>

    <!-- Defines the path used in VectorDrawables. -->
    <declare-styleable name="VectorDrawablePath">
        <!-- The name of this path. -->
        <attr name="name" />
        <!-- The width a path stroke. -->
        <attr name="strokeWidth" format="float" />
        <!-- The color to stroke the path if not defined implies no stroke. -->
        <attr name="strokeColor" format="color" />
        <!-- The opacity of a path stroke, as a value between 0 (completely transparent)
             and 1 (completely opaque). -->
        <attr name="strokeAlpha" format="float" />
        <!-- The color to fill the path if not defined implies no fill. -->
        <attr name="fillColor" format="color" />
        <!-- The alpha of the path fill, as a value between 0 (completely transparent)
             and 1 (completely opaque). -->
        <attr name="fillAlpha" format="float" />
        <!-- The specification of the operations that define the path. -->
        <attr name="pathData" format="string" />
        <!-- The fraction of the path to trim from the start from 0 to 1. -->
        <attr name="trimPathStart" format="float" />
        <!-- The fraction of the path to trim from the end from 0 to 1 . -->
        <attr name="trimPathEnd" format="float" />
        <!-- Shift trim region (allows visible region to include the start and end) from 0 to 1. -->
        <attr name="trimPathOffset" format="float" />
        <!-- sets the linecap for a stroked path. -->
        <attr name="strokeLineCap" format="enum">
            <enum name="butt" value="0"/>
            <enum name="round" value="1"/>
            <enum name="square" value="2"/>
        </attr>
        <!-- sets the lineJoin for a stroked path. -->
        <attr name="strokeLineJoin" format="enum">
            <enum name="miter" value="0"/>
            <enum name="round" value="1"/>
            <enum name="bevel" value="2"/>
        </attr>
        <!-- sets the Miter limit for a stroked path. -->
        <attr name="strokeMiterLimit" format="float"/>
        <!-- sets the fillType for a path. It is the same as SVG's "fill-rule" properties.
             For more details, see https://www.w3.org/TR/SVG/painting.html#FillRuleProperty. -->
        <attr name="fillType" format="enum">
            <enum name="nonZero" value="0"/>
            <enum name="evenOdd" value="1"/>
        </attr>
    </declare-styleable>

    <!-- Defines the clip path used in VectorDrawables. -->
    <declare-styleable name="VectorDrawableClipPath">
        <!-- The Name of this path. -->
        <attr name="name" />
        <!-- The specification of the operations that define the path. -->
        <attr name="pathData"/>
    </declare-styleable>

    <!-- ========================== -->
    <!--   AnimatedVectorDrawable class   -->
    <!-- ========================== -->
    <eat-comment />

    <!-- Define the AnimatedVectorDrawable. -->
    <declare-styleable name="AnimatedVectorDrawable">
        <!-- The static vector drawable. -->
        <attr name="drawable" />
    </declare-styleable>

    <!-- Defines the target used in the AnimatedVectorDrawable. -->
    <declare-styleable name="AnimatedVectorDrawableTarget">
        <!-- The name of the target path, group or vector drawable. -->
        <attr name="name" />
        <!-- The animation for the target path, group or vector drawable. -->
        <attr name="animation" />
    </declare-styleable>

    <!-- ========================== -->
    <!-- Animation class attributes -->
    <!-- ========================== -->
    <eat-comment />

    <declare-styleable name="Animation">
        <!-- Defines the interpolator used to smooth the animation movement in time. -->
        <attr name="interpolator" />
        <!-- When set to true, the value of fillBefore is taken into account. -->
        <attr name="fillEnabled" format="boolean" />
        <!-- When set to true or when fillEnabled is not set to true, the animation transformation
             is applied before the animation has started. The default value is true. -->
        <attr name="fillBefore" format="boolean" />
        <!-- When set to true, the animation transformation is applied after the animation is
             over. The default value is false. If fillEnabled is not set to true and the
             animation is not set on a View, fillAfter is assumed to be true.-->
        <attr name="fillAfter" format="boolean" />
        <!-- Amount of time (in milliseconds) for the animation to run. -->
        <attr name="duration" />
        <!-- Delay in milliseconds before the animation runs, once start time is reached. -->
        <attr name="startOffset" format="integer" />
        <!-- Defines how many times the animation should repeat. The default value is 0. -->
        <attr name="repeatCount" format="integer">
            <enum name="infinite" value="-1" />
        </attr>
        <!-- Defines the animation behavior when it reaches the end and the repeat count is
             greater than 0 or infinite. The default value is restart. -->
        <attr name="repeatMode">
            <!-- The animation starts again from the beginning. -->
            <enum name="restart" value="1" />
            <!-- The animation plays backward. -->
            <enum name="reverse" value="2" />
        </attr>
        <!-- Allows for an adjustment of the Z ordering of the content being
             animated for the duration of the animation.  The default value is normal. -->
        <attr name="zAdjustment">
            <!-- The content being animated be kept in its current Z order. -->
            <enum name="normal" value="0" />
            <!-- The content being animated is forced on top of all other
                 content for the duration of the animation. -->
            <enum name="top" value="1" />
            <!-- The content being animated is forced under all other
                 content for the duration of the animation. -->
            <enum name="bottom" value="-1" />
        </attr>
        <!-- Special background behind animation.  Only for use with window
             animations.  Can only be a color, and only black.  If 0, the
             default, there is no background. -->
        <attr name="background" />
        <!-- Special option for window animations: if this window is on top
             of a wallpaper, don't animate the wallpaper with it. -->
        <attr name="detachWallpaper" format="boolean" />
    </declare-styleable>

    <declare-styleable name="AnimationSet">
        <attr name="shareInterpolator" format="boolean" />
        <attr name="fillBefore" />
        <attr name="fillAfter" />
        <attr name="duration" />
        <attr name="startOffset" />
        <attr name="repeatMode" />
    </declare-styleable>

    <declare-styleable name="RotateAnimation">
        <attr name="fromDegrees" />
        <attr name="toDegrees" />
        <attr name="pivotX" />
        <attr name="pivotY" />
    </declare-styleable>

    <declare-styleable name="ScaleAnimation">
        <attr name="fromXScale" format="float|fraction|dimension" />
        <attr name="toXScale" format="float|fraction|dimension" />
        <attr name="fromYScale" format="float|fraction|dimension" />
        <attr name="toYScale" format="float|fraction|dimension" />
        <attr name="pivotX" />
        <attr name="pivotY" />
    </declare-styleable>

    <declare-styleable name="TranslateAnimation">
        <attr name="fromXDelta" format="float|fraction" />
        <attr name="toXDelta" format="float|fraction" />
        <attr name="fromYDelta" format="float|fraction" />
        <attr name="toYDelta" format="float|fraction" />
    </declare-styleable>

    <declare-styleable name="AlphaAnimation">
        <attr name="fromAlpha" format="float" />
        <attr name="toAlpha" format="float" />
    </declare-styleable>

    <declare-styleable name="LayoutAnimation">
        <!-- Fraction of the animation duration used to delay the beginning of
         the animation of each child. -->
        <attr name="delay" format="float|fraction" />
        <!-- Animation to use on each child. -->
        <attr name="animation" format="reference" />
        <!-- The order in which the animations will be started. -->
        <attr name="animationOrder">
            <!-- Animations are started in the natural order. -->
            <enum name="normal" value="0" />
            <!-- Animations are started in the reverse order. -->
            <enum name="reverse" value="1" />
            <!-- Animations are started randomly. -->
            <enum name="random" value="2" />
        </attr>
        <!-- Interpolator used to interpolate the delay between the start of
         each animation. -->
        <attr name="interpolator" />
    </declare-styleable>

    <declare-styleable name="GridLayoutAnimation">
        <!-- Fraction of the animation duration used to delay the beginning of
         the animation of each column. -->
        <attr name="columnDelay" format="float|fraction" />
        <!-- Fraction of the animation duration used to delay the beginning of
         the animation of each row. -->
        <attr name="rowDelay" format="float|fraction" />
        <!-- Direction of the animation in the grid. -->
        <attr name="direction">
            <!-- Animates columns from left to right. -->
            <flag name="left_to_right" value="0x0" />
            <!-- Animates columns from right to left. -->
            <flag name="right_to_left" value="0x1" />
            <!-- Animates rows from top to bottom. -->
            <flag name="top_to_bottom" value="0x0" />
            <!-- Animates rows from bottom to top. -->
            <flag name="bottom_to_top" value="0x2" />
        </attr>
        <!-- Priority of the rows and columns. When the priority is none,
         both rows and columns have the same priority. When the priority is
         column, the animations will be applied on the columns first. The same
         goes for rows. -->
        <attr name="directionPriority">
            <!-- Rows and columns are animated at the same time. -->
            <enum name="none"   value="0" />
            <!-- Columns are animated first. -->
            <enum name="column" value="1" />
            <!-- Rows are animated first. -->
            <enum name="row"    value="2" />
        </attr>
    </declare-styleable>

    <declare-styleable name="AccelerateInterpolator">
        <!-- This is the amount of deceleration to add when easing in. -->
        <attr name="factor" format="float" />
    </declare-styleable>

    <declare-styleable name="DecelerateInterpolator">
        <!-- This is the amount of acceleration to add when easing out. -->
        <attr name="factor" />
    </declare-styleable>

    <declare-styleable name="CycleInterpolator">
        <attr name="cycles" format="float" />
    </declare-styleable>

    <declare-styleable name="AnticipateInterpolator">
        <!-- This is the amount of tension. -->
        <attr name="tension" format="float" />
    </declare-styleable>

    <declare-styleable name="OvershootInterpolator">
        <!-- This is the amount of tension. -->
        <attr name="tension" />
    </declare-styleable>

    <declare-styleable name="AnticipateOvershootInterpolator">
        <!-- This is the amount of tension. -->
        <attr name="tension" />
        <!-- This is the amount by which to multiply the tension. -->
        <attr name="extraTension" format="float" />
    </declare-styleable>

    <declare-styleable name="PathInterpolator">
        <!-- The x coordinate of the first control point of the cubic Bezier. -->
        <attr name="controlX1" format="float" />
        <!-- The y coordinate of the first control point of the cubic Bezier. -->
        <attr name="controlY1" format="float" />
        <!-- The x coordinate of the second control point of the cubic Bezier. -->
        <attr name="controlX2" format="float" />
        <!-- The y coordinate of the second control point of the cubic Bezier. -->
        <attr name="controlY2" format="float" />
        <!-- The control points defined as a path.
             When pathData is defined, then both of the control points of the
             cubic Bezier will be ignored. -->
        <attr name="pathData"/>
    </declare-styleable>

    <!-- ========================== -->
    <!-- Transition attributes -->
    <!-- ========================== -->
    <eat-comment />

    <!-- Use specific transition subclass names as the root tag of the XML resource that
         describes a {@link android.transition.Transition Transition},
         such as <code>changeBounds</code>, <code>fade</code>, and <code>transitionSet</code>. -->
    <declare-styleable name="Transition">
        <!-- Amount of time (in milliseconds) that the transition should run. -->
        <attr name="duration" />
        <!-- Delay in milliseconds before the transition starts. -->
        <attr name="startDelay" format="integer" />
        <!-- Interpolator to be used in the animations spawned by this transition. -->
        <attr name="interpolator" />
        <!-- The match order to use for the transition. This is a comma-separated
             list of values, containing one or more of the following:
             id, itemId, name, instance. These correspond to
             {@link android.transition.Transition#MATCH_ID},
             {@link android.transition.Transition#MATCH_ITEM_ID},
             {@link android.transition.Transition#MATCH_NAME}, and
             {@link android.transition.Transition#MATCH_INSTANCE}, respectively.
             This corresponds to {@link android.transition.Transition#setMatchOrder(int...)}. -->
        <attr name="matchOrder" format="string" />
    </declare-styleable>

    <!-- @hide For internal use only. Use only as directed. -->
    <declare-styleable name="EpicenterTranslateClipReveal">
        <attr name="interpolatorX" format="reference" />
        <attr name="interpolatorY" format="reference" />
        <attr name="interpolatorZ" format="reference" />
    </declare-styleable>

    <!-- Use <code>fade</code>as the root tag of the XML resource that
         describes a {@link android.transition.Fade Fade} transition.
         The attributes of the {@link android.R.styleable#Transition Transition}
         resource are available in addition to the specific attributes of Fade
         described here. -->
    <declare-styleable name="Fade">
        <!-- Equivalent to <code>transitionVisibilityMode</code>, fadingMode works only
             with the Fade transition. -->
        <attr name="fadingMode">
            <!-- Fade will only fade appearing items in. -->
            <enum name="fade_in" value="1" />
            <!-- Fade will only fade disappearing items out. -->
            <enum name="fade_out" value="2" />
            <!-- Fade will fade appearing items in and disappearing items out. -->
            <enum name="fade_in_out" value="3" />
        </attr>
    </declare-styleable>

    <!-- Use <code>slide</code>as the root tag of the XML resource that
         describes a {@link android.transition.Slide Slide} transition.
         The attributes of the {@link android.R.styleable#Transition Transition}
         resource are available in addition to the specific attributes of Slide
         described here. -->
    <declare-styleable name="Slide">
        <attr name="slideEdge">
            <!-- Slide to and from the left edge of the Scene. -->
            <enum name="left" value="0x03" />
            <!-- Slide to and from the top edge of the Scene. -->
            <enum name="top" value="0x30" />
            <!-- Slide to and from the right edge of the Scene. -->
            <enum name="right" value="0x05" />
            <!-- Slide to and from the bottom edge of the Scene. -->
            <enum name="bottom" value="0x50" />
            <!-- Slide to and from the x-axis position at the start of the Scene root. -->
            <enum name="start" value="0x00800003"/>
            <!-- Slide to and from the x-axis position at the end of the Scene root. -->
            <enum name="end" value="0x00800005"/>
        </attr>
    </declare-styleable>

    <!-- Use with {@link android.transition.Visibility} transitions, such as
         <code>slide</code>, <code>explode</code>, and <code>fade</code> to mark which
         views are supported. -->
    <declare-styleable name="VisibilityTransition">
        <!-- Changes whether the transition supports appearing and/or disappearing Views.
             Corresponds to {@link android.transition.Visibility#setMode(int)}. -->
        <attr name="transitionVisibilityMode">
            <!-- Only appearing Views will be supported. -->
            <flag name="mode_in" value="1" />
            <!-- Only disappearing Views will be supported. -->
            <flag name="mode_out" value="2" />
        </attr>
    </declare-styleable>
    <!-- Use <code>target</code> as the root tag of the XML resource that
     describes a {@link android.transition.Transition#addTarget(int)
     targetId} of a transition. There can be one or more targets inside
     a <code>targets</code> tag, which is itself inside an appropriate
     {@link android.R.styleable#Transition Transition} tag.
     -->
    <declare-styleable name="TransitionTarget">
        <!-- The id of a target on which this transition will animate changes. -->
        <attr name="targetId" format="reference" />
        <!-- The id of a target to exclude from this transition. -->
        <attr name="excludeId" format="reference" />
        <!-- The fully-qualified name of the Class to include in this transition. -->
        <attr name="targetClass" />
        <!-- The fully-qualified name of the Class to exclude from this transition. -->
        <attr name="excludeClass" format="string" />
        <!-- The transitionName of the target on which this transition will animation changes. -->
        <attr name="targetName" format="string" />
        <!-- The transitionName of the target to exclude from this transition. -->
        <attr name="excludeName" format="string" />
    </declare-styleable>

    <!-- Use <code>set</code> as the root tag of the XML resource that
         describes a {@link android.transition.TransitionSet
         TransitionSet} transition. -->
    <declare-styleable name="TransitionSet">
        <attr name="transitionOrdering">
            <!-- child transitions should be played together. -->
            <enum name="together" value="0" />
            <!-- child transitions should be played sequentially, in the same order
            as the xml. -->
            <enum name="sequential" value="1" />
        </attr>
    </declare-styleable>

    <!-- Use <code>changeTransform</code> as the root tag of the XML resource that
         describes a {@link android.transition.ChangeTransform} transition. -->
    <declare-styleable name="ChangeTransform">
        <!-- A parent change should use an overlay or affect the transform of the
             transitionining View. Default is true. Corresponds to
             {@link android.transition.ChangeTransform#setReparentWithOverlay(boolean)}. -->
        <attr name="reparentWithOverlay" format="boolean"/>

        <!-- Tells ChangeTransform to track parent changes. Default is true. Corresponds to
             {@link android.transition.ChangeTransform#setReparent(boolean)}. -->
        <attr name="reparent" format="boolean"/>
    </declare-styleable>

    <!-- Use <code>changeBounds</code>as the root tag of the XML resource that
         describes a {@link android.transition.ChangeBounds} transition.
         The attributes of the {@link android.R.styleable#Transition Transition}
         resource are available in addition to the specific attributes of ChangeBounds
         described here. -->
    <declare-styleable name="ChangeBounds">
        <!-- Resize the view by adjusting the clipBounds rather than changing the
             dimensions of the view itself. The default value is false. -->
        <attr name="resizeClip" format="boolean"/>
    </declare-styleable>

    <!-- Use <code>transitionManager</code> as the root tag of the XML resource that
         describes a {@link android.transition.TransitionManager
         TransitionManager}. -->
    <declare-styleable name="TransitionManager">
        <!-- The id of a transition to be used in a particular scene change. -->
        <attr name="transition" format="reference" />
        <!-- The originating scene in this scene change. -->
        <attr name="fromScene" format="reference" />
        <!-- The destination scene in this scene change. -->
        <attr name="toScene" format="reference" />
    </declare-styleable>

    <!-- Use <code>arcMotion</code> as the root tag of the XML resource that
         describes a {@link android.transition.ArcMotion}. This must be used
         within a transition with which the PathMotion should be associated. -->
    <declare-styleable name="ArcMotion">
        <!-- The minimum arc angle in degrees between the start and end points when
             they are close to horizontal. -->
        <attr name="minimumHorizontalAngle" format="float" />
        <!-- The minimum arc angle in degrees between the start and end points when
             they are close to vertical. -->
        <attr name="minimumVerticalAngle" format="float" />
        <!-- The maximum arc angle in degrees between the start and end points. -->
        <attr name="maximumAngle" format="float" />
    </declare-styleable>

    <!-- Use <code>patternPathMotion</code> as the root tag of the XML resource that
         describes a {@link android.transition.PatternPathMotion}. This must be used
         within a transition with which the PathMotion should be associated. -->
    <declare-styleable name="PatternPathMotion">
        <!-- The path string describing the pattern to use for the PathPathMotion. -->
        <attr name="patternPathData" format="string" />
    </declare-styleable>

    <!-- ========================== -->
    <!-- ValueAnimator class attributes -->
    <!-- ========================== -->
    <eat-comment />

    <declare-styleable name="Animator">
        <!-- Defines the interpolator used to smooth the animation movement in time. -->
        <attr name="interpolator" />
        <!-- Amount of time (in milliseconds) for the animation to run. -->
        <attr name="duration" />
        <!-- Delay in milliseconds before the animation runs, once start time is reached. -->
        <attr name="startOffset"/>
        <!-- Defines how many times the animation should repeat. The default value is 0. -->
        <attr name="repeatCount"/>
        <!-- Defines the animation behavior when it reaches the end and the repeat count is
             greater than 0 or infinite. The default value is restart. -->
        <attr name="repeatMode"/>
        <!-- Value the animation starts from. -->
        <attr name="valueFrom" format="float|integer|color|dimension|string"/>
        <!-- Value the animation animates to. -->
        <attr name="valueTo" format="float|integer|color|dimension|string"/>
        <!-- The type of valueFrom and valueTo. -->
        <attr name="valueType">
            <!-- The given values are floats. This is the default value if valueType is
                 unspecified. Note that if any value attribute has a color value
                 (beginning with "#"), then this attribute is ignored and the color values are
                 interpreted as integers. -->
            <enum name="floatType" value="0" />
            <!-- values are integers. -->
            <enum name="intType"   value="1" />
            <!-- values are paths defined as strings.
                 This type is used for path morphing in AnimatedVectorDrawable. -->
            <enum name="pathType"   value="2" />
            <!-- values are colors, which are integers starting with "#". -->
            <enum name="colorType"   value="3" />
        </attr>
        <!-- Placeholder for a deleted attribute. This should be removed before M release. -->
        <attr name="removeBeforeMRelease" format="integer" />
    </declare-styleable>

    <declare-styleable name="PropertyValuesHolder">
        <attr name="valueType" />
        <attr name="propertyName" />
        <attr name="valueFrom" />
        <attr name="valueTo" />
    </declare-styleable>

    <declare-styleable name="Keyframe">
        <attr name="valueType" />
        <attr name="value" />
        <attr name="fraction" format="float" />
        <!-- Defines a per-interval interpolator for this keyframe. This interpolator will be used
             to interpolate between this keyframe and the previous keyframe. -->
        <attr name="interpolator" />
    </declare-styleable>

    <!-- ========================== -->
    <!-- ObjectAnimator class attributes -->
    <!-- ========================== -->
    <eat-comment />

    <declare-styleable name="PropertyAnimator">
        <!-- Name of the property being animated. -->
        <attr name="propertyName" format="string"/>
        <!-- Name of the property being animated as the X coordinate of the pathData. -->
        <attr name="propertyXName" format="string"/>
        <!-- Name of the property being animated as the Y coordinate of the pathData. -->
        <attr name="propertyYName" format="string"/>
        <!-- The path used to animate the properties in the ObjectAnimator. -->
        <attr name="pathData"/>
    </declare-styleable>


    <!-- ========================== -->
    <!-- AnimatorSet class attributes -->
    <!-- ========================== -->
    <eat-comment />

    <declare-styleable name="AnimatorSet">
        <!-- Name of the property being animated. -->
        <attr name="ordering">
            <!-- child animations should be played together. -->
            <enum name="together" value="0" />
            <!-- child animations should be played sequentially, in the same order as the xml. -->
            <enum name="sequentially" value="1" />
        </attr>
    </declare-styleable>

    <!-- ========================== -->
    <!-- State attributes           -->
    <!-- ========================== -->
    <eat-comment />

    <!-- Set of framework-provided states that may be specified on a Drawable. Actual usage of
         states may vary between view implementations, as documented on the individual state
         attributes. -->
    <declare-styleable name="DrawableStates">
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a view has input focus. -->
        <attr name="state_focused" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a view's window has input focus. -->
        <attr name="state_window_focused" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a view is enabled. -->
        <attr name="state_enabled" format="boolean" />
        <!-- State identifier indicating that the object <var>may</var> display a check mark. See
             {@link android.R.attr#state_checked} for the identifier that indicates whether it is
             actually checked. -->
        <attr name="state_checkable" format="boolean"/>
        <!-- State identifier indicating that the object is currently checked.  See
             {@link android.R.attr#state_checkable} for an additional identifier that can indicate
             if any object may ever display a check, regardless of whether state_checked is
             currently set. -->
        <attr name="state_checked" format="boolean"/>
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a view (or one of its parents) is currently selected. -->
        <attr name="state_selected" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when the user is pressing down in a view. -->
        <attr name="state_pressed" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a view or its parent has been "activated" meaning the user has currently
             marked it as being of interest.  This is an alternative representation of
             state_checked for when the state should be propagated down the view hierarchy. -->
        <attr name="state_activated" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a view or drawable is considered "active" by its host. Actual usage may vary
             between views. Consult the host view documentation for details. -->
        <attr name="state_active" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a view or drawable is considered "single" by its host. Actual usage may vary
             between views. Consult the host view documentation for details. -->
        <attr name="state_single" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a view or drawable is in the first position in an ordered set. Actual usage
             may vary between views. Consult the host view documentation for details. -->
        <attr name="state_first" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a view or drawable is in the middle position in an ordered set. Actual usage
             may vary between views. Consult the host view documentation for details. -->
        <attr name="state_middle" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a view or drawable is in the last position in an ordered set. Actual usage
             may vary between views. Consult the host view documentation for details. -->
        <attr name="state_last" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             indicating that the Drawable is in a view that is hardware accelerated.
             This means that the device can at least render a full-screen scaled
             bitmap with one layer of text and bitmaps composited on top of it
             at 60fps.  When this is set, the colorBackgroundCacheHint will be
             ignored even if it specifies a solid color, since that optimization
             is not needed. -->
        <attr name="state_accelerated" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable},
             set when a pointer is hovering over the view. -->
        <attr name="state_hovered" format="boolean" />
        <!-- State for {@link android.graphics.drawable.StateListDrawable StateListDrawable}
             indicating that the Drawable is in a view that is capable of accepting a drop of
             the content currently being manipulated in a drag-and-drop operation. -->
        <attr name="state_drag_can_accept" format="boolean" />
        <!-- State for {@link android.graphics.drawable.StateListDrawable StateListDrawable}
             indicating that a drag operation (for which the Drawable's view is a valid recipient)
             is currently positioned over the Drawable. -->
        <attr name="state_drag_hovered" format="boolean" />
        <!-- State for {@link android.graphics.drawable.StateListDrawable StateListDrawable}
             indicating that a View has accessibility focus. -->
        <attr name="state_accessibility_focused" format="boolean" />
    </declare-styleable>
    <declare-styleable name="ViewDrawableStates">
        <attr name="state_pressed" />
        <attr name="state_focused" />
        <attr name="state_selected" />
        <attr name="state_window_focused" />
        <attr name="state_enabled" />
        <attr name="state_activated" />
        <attr name="state_accelerated" />
        <attr name="state_hovered" />
        <attr name="state_drag_can_accept" />
        <attr name="state_drag_hovered" />
    </declare-styleable>
    <!-- State array representing a menu item that is currently checked. -->
    <declare-styleable name="MenuItemCheckedState">
        <attr name="state_checkable" />
        <attr name="state_checked" />
    </declare-styleable>
    <!-- State array representing a menu item that is checkable but is not currently checked. -->
    <declare-styleable name="MenuItemUncheckedState">
        <attr name="state_checkable" />
    </declare-styleable>
    <!-- State array representing a menu item that is currently focused and checked. -->
    <declare-styleable name="MenuItemCheckedFocusedState">
        <attr name="state_checkable" />
        <attr name="state_checked" />
        <attr name="state_focused" />
    </declare-styleable>
    <!-- State array representing a menu item that is focused and checkable but is not currently checked. -->
    <declare-styleable name="MenuItemUncheckedFocusedState">
        <attr name="state_checkable" />
        <attr name="state_focused" />
    </declare-styleable>
    <!-- State array representing an expandable list child's indicator. -->
    <declare-styleable name="ExpandableListChildIndicatorState">
        <!-- State identifier indicating the child is the last child within its group. -->
        <attr name="state_last" />
    </declare-styleable>
    <!-- State array representing an expandable list group's indicator. -->
    <declare-styleable name="ExpandableListGroupIndicatorState">
        <!-- State identifier indicating the group is expanded. -->
        <attr name="state_expanded" format="boolean" />
        <!-- State identifier indicating the group is empty (has no children). -->
        <attr name="state_empty" format="boolean" />
    </declare-styleable>
    <declare-styleable name="PopupWindowBackgroundState">
        <!-- State identifier indicating the popup will be above the anchor. -->
        <attr name="state_above_anchor" format="boolean" />
    </declare-styleable>
    <declare-styleable name="TextViewMultiLineBackgroundState">
        <!-- State identifier indicating a TextView has a multi-line layout. -->
        <attr name="state_multiline" format="boolean" />
    </declare-styleable>

    <!-- ***************************************************************** -->
    <!-- Support for Searchable activities. -->
    <!-- ***************************************************************** -->
    <eat-comment />

    <!-- Searchable activities and applications must provide search configuration information
        in an XML file, typically called searchable.xml.  This file is referenced in your manifest.
        For a more in-depth discussion of search configuration, please refer to
        {@link android.app.SearchManager}. -->
    <declare-styleable name="Searchable">
          <!--<strong>This is deprecated.</strong><br/>The default
              application icon is now always used, so this attribute is
              obsolete.-->
        <attr name="icon" />
        <!-- This is the user-displayed name of the searchable activity.  <i>Required
            attribute.</i> -->
        <attr name="label" />
        <!-- If supplied, this string will be displayed as a hint to the user.  <i>Optional
            attribute.</i> -->
        <attr name="hint" />
        <!-- If supplied, this string will be displayed as the text of the "Search" button.
          <i>Optional attribute.</i>
          {@deprecated This will create a non-standard UI appearance, because the search bar UI is
                       changing to use only icons for its buttons.}-->
        <attr name="searchButtonText" format="string" />
        <attr name="inputType" />
        <attr name="imeOptions" />

        <!-- Additional features are controlled by mode bits in this field.  Omitting
            this field, or setting to zero, provides default behavior.  <i>Optional attribute.</i>
        -->
        <attr name="searchMode">
          <!-- If set, this flag enables the display of the search target (label) within the
               search bar.  If neither bad mode is selected, no badge will be shown. -->
          <flag name="showSearchLabelAsBadge" value="0x04" />
          <!--<strong>This is deprecated.</strong><br/>The default
              application icon is now always used, so this option is
              obsolete.-->
          <flag name="showSearchIconAsBadge" value="0x08" />
          <!-- If set, this flag causes the suggestion column SUGGEST_COLUMN_INTENT_DATA to
               be considered as the text for suggestion query rewriting.  This should only
               be used when the values in SUGGEST_COLUMN_INTENT_DATA are suitable for user
               inspection and editing - typically, HTTP/HTTPS Uri's. -->
          <flag name="queryRewriteFromData" value="0x10" />
          <!-- If set, this flag causes the suggestion column SUGGEST_COLUMN_TEXT_1 to
               be considered as the text for suggestion query rewriting.  This should be used
               for suggestions in which no query text is provided and the SUGGEST_COLUMN_INTENT_DATA
               values are not suitable for user inspection and editing. -->
          <flag name="queryRewriteFromText" value="0x20" />
        </attr>

        <!-- Voice search features are controlled by mode bits in this field.  Omitting
            this field, or setting to zero, provides default behavior.
            If showVoiceSearchButton is set, then launchWebSearch or launchRecognizer must
            also be set.  <i>Optional attribute.</i>
        -->
        <attr name="voiceSearchMode">
          <!-- If set, display a voice search button.  This only takes effect if voice search is
               available on the device. -->
          <flag name="showVoiceSearchButton" value="0x01" />
          <!-- If set, the voice search button will take the user directly to a built-in
               voice web search activity.  Most applications will not use this flag, as it
               will take the user away from the activity in which search was invoked. -->
          <flag name="launchWebSearch" value="0x02" />
          <!-- If set, the voice search button will take the user directly to a built-in
               voice recording activity.  This activity will prompt the user to speak,
               transcribe the spoken text, and forward the resulting query
               text to the searchable activity, just as if the user had typed it into
               the search UI and clicked the search button. -->
          <flag name="launchRecognizer" value="0x04" />
        </attr>

        <!-- If provided, this specifies the language model that should be used by the
             voice recognition system.  See
             {@link android.speech.RecognizerIntent#EXTRA_LANGUAGE_MODEL } for more information.
             If not provided, the default value
             {@link android.speech.RecognizerIntent#LANGUAGE_MODEL_FREE_FORM } will be used. -->
        <attr name="voiceLanguageModel" format="string" />
        <!-- If provided, this specifies a prompt that will be displayed during voice input. -->
        <attr name="voicePromptText" format="string" />
        <!-- If provided, this specifies the spoken language to be expected, and that it will be
             different than the one set in the {@link java.util.Locale#getDefault()}. -->
        <attr name="voiceLanguage" format="string" />
        <!-- If provided, enforces the maximum number of results to return, including the "best"
             result which will always be provided as the SEARCH intent's primary query.  Must be one
             or greater.  If not provided, the recognizer will choose how many results to return.
             -->
        <attr name="voiceMaxResults" format="integer" />

        <!-- If provided, this is the trigger indicating that the searchable activity
            provides suggestions as well.  The value must be a fully-qualified content provider
            authority (for example, "com.example.android.apis.SuggestionProvider") and should match
            the "android:authorities" tag in your content provider's manifest entry.  <i>Optional
            attribute.</i> -->
        <attr name="searchSuggestAuthority" format="string" />
        <!-- If provided, this will be inserted in the suggestions query Uri, after the authority
            you have provide but before the standard suggestions path. <i>Optional attribute.</i>
            -->
        <attr name="searchSuggestPath" format="string" />
        <!-- If provided, suggestion queries will be passed into your query function
            as the <i>selection</i> parameter.  Typically this will be a WHERE clause for your
            database, and will contain a single question mark, which represents the actual query
            string that has been typed by the user.  If not provided, then the user query text
            will be appended to the query Uri (after an additional "/".)  <i>Optional
            attribute.</i> -->
        <attr name="searchSuggestSelection" format="string" />

        <!-- If provided, and not overridden by an action in the selected suggestion, this
            string will be placed in the action field of the {@link android.content.Intent Intent}
            when the user clicks a suggestion.  <i>Optional attribute.</i> -->
        <attr name="searchSuggestIntentAction" format="string" />
        <!-- If provided, and not overridden by an action in the selected suggestion, this
            string will be placed in the data field of the {@link android.content.Intent Intent}
            when the user clicks a suggestion.  <i>Optional attribute.</i> -->
        <attr name="searchSuggestIntentData" format="string" />

        <!-- If provided, this is the minimum number of characters needed to trigger
             search suggestions. The default value is 0. <i>Optional attribute.</i> -->
        <attr name="searchSuggestThreshold" format="integer" />

        <!-- If provided and <code>true</code>, this searchable activity will be
             included in any global lists of search targets.
             The default value is <code>false</code>. <i>Optional attribute.</i>. -->
        <attr name="includeInGlobalSearch" format="boolean" />

        <!-- If provided and <code>true</code>, this searchable activity will be invoked for all
             queries in a particular session. If set to <code>false</code> and the activity
             returned zero results for a query, it will not be invoked again in that session for
             supersets of that zero-results query. For example, if the activity returned zero
             results for "bo", it would not be queried again for "bob".
             The default value is <code>false</code>. <i>Optional attribute.</i>. -->
        <attr name="queryAfterZeroResults" format="boolean" />
        <!-- If provided, this string will be used to describe the searchable item in the
             searchable items settings within system search settings. <i>Optional
             attribute.</i> -->
        <attr name="searchSettingsDescription" format="string" />

        <!-- If provided and <code>true</code>, URLs entered in the search dialog while searching
             within this activity would be detected and treated as URLs (show a 'go' button in the
             keyboard and invoke the browser directly when user launches the URL instead of passing
             the URL to the activity). If set to <code>false</code> any URLs entered are treated as
             normal query text.
             The default value is <code>false</code>. <i>Optional attribute.</i>. -->
        <attr name="autoUrlDetect" format="boolean" />

    </declare-styleable>

    <!-- In order to process special action keys during search, you must define them using
            one or more "ActionKey" elements in your Searchable metadata.  For a more in-depth
            discussion of action code handling, please refer to {@link android.app.SearchManager}.
    -->
    <declare-styleable name="SearchableActionKey">
        <!-- This attribute denotes the action key you wish to respond to.  Note that not
            all action keys are actually supported using this mechanism, as many of them are
            used for typing, navigation, or system functions.  This will be added to the
            {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your
            searchable activity.  To examine the key code, use
            {@link android.content.Intent#getIntExtra getIntExtra(SearchManager.ACTION_KEY)}.
            <p>Note, in addition to the keycode, you must also provide one or more of the action
            specifier attributes.  <i>Required attribute.</i> -->
        <attr name="keycode" />

        <!-- If you wish to handle an action key during normal search query entry, you
            must define an action string here.  This will be added to the
            {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your
            searchable activity.  To examine the string, use
            {@link android.content.Intent#getStringExtra getStringExtra(SearchManager.ACTION_MSG)}.
            <i>Optional attribute.</i> -->
        <attr name="queryActionMsg"  format="string" />

        <!-- If you wish to handle an action key while a suggestion is being displayed <i>and
            selected</i>, there are two ways to handle this.  If <i>all</i> of your suggestions
            can handle the action key, you can simply define the action message using this
            attribute.  This will be added to the
            {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to your
            searchable activity.  To examine the string, use
            {@link android.content.Intent#getStringExtra getStringExtra(SearchManager.ACTION_MSG)}.
            <i>Optional attribute.</i> -->
        <attr name="suggestActionMsg"  format="string" />

        <!-- If you wish to handle an action key while a suggestion is being displayed <i>and
            selected</i>, but you do not wish to enable this action key for every suggestion,
            then you can use this attribute to control it on a suggestion-by-suggestion basis.
            First, you must define a column (and name it here) where your suggestions will include
            the action string.  Then, in your content provider, you must provide this column, and
            when desired, provide data in this column.
            The search manager will look at your suggestion cursor, using the string
            provided here in order to select a column, and will use that to select a string from
            the cursor.  That string will be added to the
            {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH} intent that is passed to
            your searchable activity.  To examine the string, use
            {@link android.content.Intent#getStringExtra
            getStringExtra(SearchManager.ACTION_MSG)}.  <i>If the data does not exist for the
            selection suggestion, the action key will be ignored.</i><i>Optional attribute.</i> -->
        <attr name="suggestActionMsgColumn" format="string" />

    </declare-styleable>

    <!-- ***************************************************************** -->
    <!-- Support for MapView. -->
    <!-- ***************************************************************** -->
    <eat-comment />

    <!-- The set of attributes for a MapView. -->
    <declare-styleable name="MapView">
        <!-- Value is a string that specifies the Maps API Key to use. -->
        <attr name="apiKey" format="string" />
    </declare-styleable>

    <!-- **************************************************************** -->
    <!-- Menu XML inflation. -->
    <!-- **************************************************************** -->
    <eat-comment />

    <!-- Base attributes that are available to all Menu objects. -->
    <declare-styleable name="Menu">
    </declare-styleable>

    <!-- Base attributes that are available to all groups. -->
    <declare-styleable name="MenuGroup">

        <!-- The ID of the group. -->
        <attr name="id" />

        <!-- The category applied to all items within this group.
             (This will be or'ed with the orderInCategory attribute.) -->
        <attr name="menuCategory">
            <!-- Items are part of a container. -->
            <enum name="container" value="0x00010000" />
            <!-- Items are provided by the system. -->
            <enum name="system" value="0x00020000" />
            <!-- Items are user-supplied secondary (infrequently used). -->
            <enum name="secondary" value="0x00030000" />
            <!-- Items are alternative actions. -->
            <enum name="alternative" value="0x00040000" />
        </attr>

        <!-- The order within the category applied to all items within this group.
             (This will be or'ed with the category attribute.) -->
        <attr name="orderInCategory" format="integer" />

        <!-- Whether the items are capable of displaying a check mark. -->
        <attr name="checkableBehavior">
            <!-- The items are not checkable. -->
            <enum name="none" value="0" />
            <!-- The items are all checkable. -->
            <enum name="all" value="1" />
            <!-- The items are checkable and there will only be a single checked item in
                 this group. -->
            <enum name="single" value="2" />
        </attr>

        <!-- Whether the items are shown/visible. -->
        <attr name="visible" />

        <!-- Whether the items are enabled. -->
        <attr name="enabled" />

    </declare-styleable>

    <!-- Base attributes that are available to all Item objects. -->
    <declare-styleable name="MenuItem">

        <!-- The ID of the item. -->
        <attr name="id" />

        <!-- The category applied to the item.
             (This will be or'ed with the orderInCategory attribute.) -->
        <attr name="menuCategory" />

        <!-- The order within the category applied to the item.
             (This will be or'ed with the category attribute.) -->
        <attr name="orderInCategory" />

        <!-- The title associated with the item. -->
        <attr name="title" format="string" />

        <!-- The condensed title associated with the item.  This is used in situations where the
             normal title may be too long to be displayed. -->
        <attr name="titleCondensed" format="string" />

        <!-- The icon associated with this item.  This icon will not always be shown, so
             the title should be sufficient in describing this item. -->
        <attr name="icon" />

        <!-- Tint to apply to the icon. -->
        <attr name="iconTint" format="color" />

        <!-- Blending mode used to apply the icon tint. -->
        <attr name="iconTintMode">
            <!-- The tint is drawn on top of the icon.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the icon. The icon’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the icon, but with the icon’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the icon with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and icon color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>

        <!-- The alphabetic shortcut key.  This is the shortcut when using a keyboard
             with alphabetic keys. -->
        <attr name="alphabeticShortcut" format="string" />

        <!-- The alphabetic modifier key. This is the modifier when using a keyboard
             with alphabetic keys. The values should be kept in sync with KeyEvent -->
        <attr name="alphabeticModifiers">
            <flag name="META" value="0x10000" />
            <flag name="CTRL" value="0x1000" />
            <flag name="ALT" value="0x02" />
            <flag name="SHIFT" value="0x1" />
            <flag name="SYM" value="0x4" />
            <flag name="FUNCTION" value="0x8" />
        </attr>

        <!-- The numeric shortcut key.  This is the shortcut when using a numeric (for example,
             12-key) keyboard. -->
        <attr name="numericShortcut" format="string" />

        <!-- The numeric modifier key. This is the modifier when using a numeric (for example,
             12-key) keyboard. The values should be kept in sync with KeyEvent -->
        <attr name="numericModifiers">
            <flag name="META" value="0x10000" />
            <flag name="CTRL" value="0x1000" />
            <flag name="ALT" value="0x02" />
            <flag name="SHIFT" value="0x1" />
            <flag name="SYM" value="0x4" />
            <flag name="FUNCTION" value="0x8" />
        </attr>

        <!-- Whether the item is capable of displaying a check mark. -->
        <attr name="checkable" format="boolean" />

        <!-- Whether the item is checked.  Note that you must first have enabled checking with
             the checkable attribute or else the check mark will not appear. -->
        <attr name="checked" />

        <!-- Whether the item is shown/visible. -->
        <attr name="visible" />

        <!-- Whether the item is enabled. -->
        <attr name="enabled" />

        <!-- Name of a method on the Context used to inflate the menu that will be
             called when the item is clicked. -->
        <attr name="onClick" />

        <!-- How this item should display in the Action Bar, if present. -->
        <attr name="showAsAction">
            <!-- Never show this item in an action bar, show it in the overflow menu instead.
                 Mutually exclusive with "ifRoom" and "always". -->
            <flag name="never" value="0" />
            <!-- Show this item in an action bar if there is room for it as determined
                 by the system. Favor this option over "always" where possible.
                 Mutually exclusive with "never" and "always". -->
            <flag name="ifRoom" value="1" />
            <!-- Always show this item in an actionbar, even if it would override
                 the system's limits of how much stuff to put there. This may make
                 your action bar look bad on some screens. In most cases you should
                 use "ifRoom" instead. Mutually exclusive with "ifRoom" and "never". -->
            <flag name="always" value="2" />
            <!-- When this item is shown as an action in the action bar, show a text
                 label with it even if it has an icon representation. -->
            <flag name="withText" value="4" />
            <!-- This item's action view collapses to a normal menu
                 item. When expanded, the action view takes over a
                 larger segment of its container. -->
            <flag name="collapseActionView" value="8" />
        </attr>

        <!-- An optional layout to be used as an action view.
             See {@link android.view.MenuItem#setActionView(android.view.View)}
             for more info. -->
        <attr name="actionLayout" format="reference" />

        <!-- The name of an optional View class to instantiate and use as an
             action view. See {@link android.view.MenuItem#setActionView(android.view.View)}
             for more info. -->
        <attr name="actionViewClass" format="string" />

        <!-- The name of an optional ActionProvider class to instantiate an action view
             and perform operations such as default action for that menu item.
             See {@link android.view.MenuItem#setActionProvider(android.view.ActionProvider)}
             for more info. -->
        <attr name="actionProviderClass" format="string" />

        <!-- The content description associated with the item. -->
        <attr name="contentDescription" format="string" />

        <!-- The tooltip text associated with the item. -->
        <attr name="tooltipText" format="string" />

    </declare-styleable>

    <!-- Attrbitutes for a ActvityChooserView. -->
    <declare-styleable name="ActivityChooserView">
        <!-- The maximal number of items initially shown in the activity list. -->
        <attr name="initialActivityCount" format="string" />
        <!-- The drawable to show in the button for expanding the activities overflow popup.
             <strong>Note:</strong> Clients would like to set this drawable
             as a clue about the action the chosen activity will perform. For
             example, if share activity is to be chosen the drawable should
             give a clue that sharing is to be performed.
         -->
        <attr name="expandActivityOverflowButtonDrawable" format="reference" />
    </declare-styleable>

    <!-- **************************************************************** -->
    <!-- Preferences framework. -->
    <!-- **************************************************************** -->
    <eat-comment />

    <!-- Base attributes available to PreferenceGroup. -->
    <declare-styleable name="PreferenceGroup">
        <!-- Whether to order the Preference under this group as they appear in the XML file.
             If this is false, the ordering will follow the Preference order attribute and
             default to alphabetic for those without the order attribute. -->
        <attr name="orderingFromXml" format="boolean" />
    </declare-styleable>

    <!-- Attribute for a header describing the item shown in the top-level list
         from which the selects the set of preference to dig in to. -->
    <declare-styleable name="PreferenceHeader">
        <!-- Identifier value for the header. -->
        <attr name="id" />
        <!-- The title of the item that is shown to the user. -->
        <attr name="title" />
        <!-- The summary for the item. -->
        <attr name="summary" format="string" />
        <!-- The title for the bread crumb of this item. -->
        <attr name="breadCrumbTitle" format="string" />
        <!-- The short title for the bread crumb of this item. -->
        <attr name="breadCrumbShortTitle" format="string" />
        <!-- An icon for the item. -->
        <attr name="icon" />
        <!-- The fragment that is displayed when the user selects this item. -->
        <attr name="fragment" format="string" />
    </declare-styleable>

    <!-- WARNING:  If adding attributes to Preference, make sure it does not conflict
                   with a View's attributes.  Some subclasses (for example, EditTextPreference)
                   proxy all attributes to its EditText widget. -->
    <eat-comment />

    <!-- Base attributes available to Preference. -->
    <declare-styleable name="Preference">
        <!-- The optional icon for the preference. -->
        <attr name="icon" />
        <!-- The key to store the Preference value. -->
        <attr name="key" format="string" />
        <!-- The title for the Preference. In API 25 and earlier, this value is read as a
         plain string with styling information stripped. -->
        <attr name="title" />
        <!-- The summary for the Preference. In API 25 and earlier, this value is read as a
         plain string with styling information stripped. -->
        <attr name="summary" />
        <!-- The order for the Preference (lower values are to be ordered first). If this is not
             specified, the default ordering will be alphabetic. -->
        <attr name="order" format="integer" />
        <!-- When used inside of a modern PreferenceActivity, this declares
             a new PreferenceFragment to be shown when the user selects this item. -->
        <attr name="fragment" />
        <!-- The layout for the Preference in a PreferenceActivity screen. This should
             rarely need to be changed, look at widgetLayout instead. -->
        <attr name="layout" />
        <!-- The layout for the controllable widget portion of a Preference. This is inflated
             into the layout for a Preference and should be used more frequently than
             the layout attribute. For example, a checkbox preference would specify
             a custom layout (consisting of just the CheckBox) here. -->
        <attr name="widgetLayout" format="reference" />
        <!-- Whether the Preference is enabled. -->
        <attr name="enabled" />
        <!-- Whether the Preference is selectable. -->
        <attr name="selectable" format="boolean" />
        <!-- The key of another Preference that this Preference will depend on.  If the other
             Preference is not set or is off, this Preference will be disabled. -->
        <attr name="dependency" format="string" />
        <!-- Whether the Preference stores its value to the storage. -->
        <attr name="persistent" />
        <!-- The default value for the preference, which will be set either if persistence
             is off or persistence is on and the preference is not found in the persistent
             storage.  -->
        <attr name="defaultValue" format="string|boolean|integer|reference|float" />
        <!-- Whether the view of this Preference should be disabled when
             this Preference is disabled. -->
        <attr name="shouldDisableView" format="boolean" />
        <!-- Whether the preference has enabled to have its view recycled when used in the list
             view. This is true by default. -->
        <attr name="recycleEnabled" format="boolean" />
        <!-- Whether to use single line for the preference title text. By default, preference title
             will be constrained to one line, so the default value of this attribute is true. -->
        <attr name="singleLineTitle" format="boolean" />
        <!-- Whether the space for the preference icon view will be reserved. By default, preference
             icon view visibility will be set to GONE when there is no icon provided, so the default
             value of this attribute is false. -->
        <attr name="iconSpaceReserved" format="boolean" />
    </declare-styleable>

    <!-- Base attributes available to CheckBoxPreference. -->
    <declare-styleable name="CheckBoxPreference">
        <!-- The summary for the Preference in a PreferenceActivity screen when the
             CheckBoxPreference is checked. If separate on/off summaries are not
             needed, the summary attribute can be used instead. -->
        <attr name="summaryOn" format="string" />
        <!-- The summary for the Preference in a PreferenceActivity screen when the
             CheckBoxPreference is unchecked. If separate on/off summaries are not
             needed, the summary attribute can be used instead. -->
        <attr name="summaryOff" format="string" />
        <!-- The state (true for on, or false for off) that causes dependents to be disabled. By default,
             dependents will be disabled when this is unchecked, so the value of this preference is false. -->
        <attr name="disableDependentsState" format="boolean" />
    </declare-styleable>

    <!-- Base attributes available to DialogPreference. -->
    <declare-styleable name="DialogPreference">
        <!-- The title in the dialog. -->
        <attr name="dialogTitle" format="string" />
        <!-- The message in the dialog. If a dialogLayout is provided and contains
             a TextView with ID android:id/message, this message will be placed in there. -->
        <attr name="dialogMessage" format="string" />
        <!-- The icon for the dialog. -->
        <attr name="dialogIcon" format="reference" />
        <!-- The positive button text for the dialog. Set to @null to hide the positive button. -->
        <attr name="positiveButtonText" format="string" />
        <!-- The negative button text for the dialog. Set to @null to hide the negative button. -->
        <attr name="negativeButtonText" format="string" />
        <!-- A layout to be used as the content View for the dialog. By default, this shouldn't
             be needed. If a custom DialogPreference is required, this should be set. For example,
             the EditTextPreference uses a layout with an EditText as this attribute. -->
        <attr name="dialogLayout" format="reference" />
    </declare-styleable>

    <!-- Base attributes available to ListPreference. -->
    <declare-styleable name="ListPreference">
        <!-- The human-readable array to present as a list. Each entry must have a corresponding
             index in entryValues. -->
        <attr name="entries" />
        <!-- The array to find the value to save for a preference when an entry from
             entries is selected. If a user clicks on the second item in entries, the
             second item in this array will be saved to the preference. -->
        <attr name="entryValues" format="reference" />
    </declare-styleable>

    <declare-styleable name="MultiSelectListPreference">
        <!-- The human-readable array to present as a list. Each entry must have a corresponding
             index in entryValues. -->
        <attr name="entries" />
        <!-- The array to find the value to save for a preference when an entry from
             entries is selected. If a user clicks the second item in entries, the
             second item in this array will be saved to the preference. -->
        <attr name="entryValues" />
    </declare-styleable>

    <!-- Base attributes available to RingtonePreference. -->
    <declare-styleable name="RingtonePreference">
        <!-- Which ringtone type(s) to show in the picker. -->
        <attr name="ringtoneType">
            <!-- Ringtones. -->
            <flag name="ringtone" value="1" />
            <!-- Notification sounds. -->
            <flag name="notification" value="2" />
            <!-- Alarm sounds. -->
            <flag name="alarm" value="4" />
            <!-- All available ringtone sounds. -->
            <flag name="all" value="7" />
        </attr>
        <!-- Whether to show an item for a default sound. -->
        <attr name="showDefault" format="boolean" />
        <!-- Whether to show an item for 'Silent'. -->
        <attr name="showSilent" format="boolean" />
    </declare-styleable>

    <!-- Base attributes available to VolumePreference. -->
    <declare-styleable name="VolumePreference">
        <!-- Different audio stream types. -->
        <attr name="streamType">
            <enum name="voice" value="0" />
            <enum name="system" value="1" />
            <enum name="ring" value="2" />
            <enum name="music" value="3" />
            <enum name="alarm" value="4" />
        </attr>
    </declare-styleable>

    <declare-styleable name="InputMethodService">
        <!-- Background to use for entire input method when it is being
             shown in fullscreen mode with the extract view, to ensure
             that it completely covers the application.  This allows,
             for example, the candidate view to be hidden
             while in fullscreen mode without having the application show through
             behind it.-->
        <attr name="imeFullscreenBackground" format="reference|color" />
        <!-- Animation to use when showing the fullscreen extract UI after
             it had previously been hidden. -->
        <attr name="imeExtractEnterAnimation" format="reference" />
        <!-- Animation to use when hiding the fullscreen extract UI after
             it had previously been shown. -->
        <attr name="imeExtractExitAnimation" format="reference" />
    </declare-styleable>

    <declare-styleable name="VoiceInteractionSession">
    </declare-styleable>

    <declare-styleable name="KeyboardView">
        <!-- Default KeyboardView style. -->
        <attr name="keyboardViewStyle" format="reference" />

        <!-- Image for the key. This image needs to be a StateListDrawable, with the following
             possible states: normal, pressed, checkable, checkable+pressed, checkable+checked,
             checkable+checked+pressed. -->
        <attr name="keyBackground" format="reference" />

        <!-- Size of the text for character keys. -->
        <attr name="keyTextSize" format="dimension" />

        <!-- Size of the text for custom keys with some text and no icon. -->
        <attr name="labelTextSize" format="dimension" />

        <!-- Color to use for the label in a key. -->
        <attr name="keyTextColor" format="color" />

        <!-- Layout resource for key press feedback.-->
        <attr name="keyPreviewLayout" format="reference" />

        <!-- Vertical offset of the key press feedback from the key. -->
        <attr name="keyPreviewOffset" format="dimension" />

        <!-- Height of the key press feedback popup. -->
        <attr name="keyPreviewHeight" format="dimension" />

        <!-- Amount to offset the touch Y coordinate by, for bias correction. -->
        <attr name="verticalCorrection" format="dimension" />

        <!-- Layout resource for popup keyboards. -->
        <attr name="popupLayout" format="reference" />

        <attr name="shadowColor" />
        <attr name="shadowRadius" />
    </declare-styleable>

    <declare-styleable name="KeyboardViewPreviewState">
        <!-- State for {@link android.inputmethodservice.KeyboardView KeyboardView}
                key preview background. -->
        <attr name="state_long_pressable" format="boolean" />
    </declare-styleable>

    <declare-styleable name="Keyboard">
        <!-- Default width of a key, in pixels or percentage of display width. -->
        <attr name="keyWidth" format="dimension|fraction" />
        <!-- Default height of a key, in pixels or percentage of display width. -->
        <attr name="keyHeight" format="dimension|fraction" />
        <!-- Default horizontal gap between keys. -->
        <attr name="horizontalGap" format="dimension|fraction" />
        <!-- Default vertical gap between rows of keys. -->
        <attr name="verticalGap" format="dimension|fraction" />
    </declare-styleable>

    <declare-styleable name="Keyboard_Row">
        <!-- Row edge flags. -->
        <attr name="rowEdgeFlags">
            <!-- Row is anchored to the top of the keyboard. -->
            <flag name="top" value="4" />
            <!-- Row is anchored to the bottom of the keyboard. -->
            <flag name="bottom" value="8" />
        </attr>
        <!-- Mode of the keyboard. If the mode doesn't match the
             requested keyboard mode, the row will be skipped. -->
        <attr name="keyboardMode" format="reference" />
    </declare-styleable>

    <declare-styleable name="Keyboard_Key">
        <!-- The unicode value or comma-separated values that this key outputs. -->
        <attr name="codes" format="integer|string" />
        <!-- The XML keyboard layout of any popup keyboard. -->
        <attr name="popupKeyboard" format="reference" />
        <!-- The characters to display in the popup keyboard. -->
        <attr name="popupCharacters" format="string" />
        <!-- Key edge flags. -->
        <attr name="keyEdgeFlags">
            <!-- Key is anchored to the left of the keyboard. -->
            <flag name="left" value="1" />
            <!-- Key is anchored to the right of the keyboard. -->
            <flag name="right" value="2" />
        </attr>
        <!-- Whether this is a modifier key such as Alt or Shift. -->
        <attr name="isModifier" format="boolean" />
        <!-- Whether this is a toggle key. -->
        <attr name="isSticky" format="boolean" />
        <!-- Whether long-pressing on this key will make it repeat. -->
        <attr name="isRepeatable" format="boolean" />
        <!-- The icon to show in the popup preview. -->
        <attr name="iconPreview" format="reference" />
        <!-- The string of characters to output when this key is pressed. -->
        <attr name="keyOutputText" format="string" />
        <!-- The label to display on the key. -->
        <attr name="keyLabel" format="string" />
        <!-- The icon to display on the key instead of the label. -->
        <attr name="keyIcon" format="reference" />
        <!-- Mode of the keyboard. If the mode doesn't match the
             requested keyboard mode, the key will be skipped. -->
        <attr name="keyboardMode" />
    </declare-styleable>

    <!-- =============================== -->
    <!-- AppWidget package class attributes -->
    <!-- =============================== -->
    <eat-comment />

    <!-- Use <code>appwidget-provider</code> as the root tag of the XML resource that
         describes an AppWidget provider.  See {@link android.appwidget android.appwidget}
         package for more info.
     -->
    <declare-styleable name="AppWidgetProviderInfo">
        <!-- Minimum width of the AppWidget. -->
        <attr name="minWidth"/>
        <!-- Minimum height of the AppWidget. -->
        <attr name="minHeight"/>
        <!-- Minimum width that the AppWidget can be resized to. -->
        <attr name="minResizeWidth" format="dimension"/>
        <!-- Minimum height that the AppWidget can be resized to. -->
        <attr name="minResizeHeight" format="dimension"/>
        <!-- Update period in milliseconds, or 0 if the AppWidget will update itself. -->
        <attr name="updatePeriodMillis" format="integer" />
        <!-- A resource id of a layout. -->
        <attr name="initialLayout" format="reference" />
        <!-- A resource id of a layout. -->
        <attr name="initialKeyguardLayout" format="reference" />
        <!-- A class name in the AppWidget's package to be launched to configure.
             If not supplied, then no activity will be launched. -->
        <attr name="configure" format="string" />
        <!-- A preview of what the AppWidget will look like after it's configured.
              If not supplied, the AppWidget's icon will be used. -->
        <attr name="previewImage" format="reference" />
        <!-- The view id of the AppWidget subview which should be auto-advanced.
             by the widget's host. -->
        <attr name="autoAdvanceViewId" format="reference" />
        <!-- Optional parameter which indicates if and how this widget can be
             resized. Supports combined values using | operator. -->
        <attr name="resizeMode" format="integer">
            <flag name="none" value="0x0" />
            <flag name="horizontal" value="0x1" />
            <flag name="vertical" value="0x2" />
        </attr>
        <!-- Optional parameter which indicates where this widget can be shown,
             ie. home screen, keyguard, search bar or any combination thereof.
             Supports combined values using | operator. -->
        <attr name="widgetCategory" format="integer">
            <flag name="home_screen" value="0x1" />
            <flag name="keyguard" value="0x2" />
            <flag name="searchbox" value="0x4" />
        </attr>
    </declare-styleable>

    <!-- =============================== -->
    <!-- Wallpaper preview attributes    -->
    <!-- =============================== -->
    <eat-comment />

    <!-- Use <code>wallpaper-preview</code> as the root tag of the XML resource that
         describes a wallpaper preview. -->
    <declare-styleable name="WallpaperPreviewInfo">
        <!-- A resource id of a static drawable. -->
        <attr name="staticWallpaperPreview" format="reference" />
    </declare-styleable>

    <!-- =============================== -->
    <!-- App package class attributes -->
    <!-- =============================== -->
    <eat-comment />

    <!-- ============================= -->
    <!-- View package class attributes -->
    <!-- ============================= -->
    <eat-comment />

    <!-- Attributes that can be used with <code>&lt;fragment&gt;</code>
         tags inside of the layout of an Activity.  This instantiates
         the given {@link android.app.Fragment} and inserts its content
         view into the current location in the layout. -->
    <declare-styleable name="Fragment">
        <!-- Supply the name of the fragment class to instantiate. -->
        <attr name="name" />

        <!-- Supply an identifier name for the top-level view, to later retrieve it
             with {@link android.view.View#findViewById View.findViewById()} or
             {@link android.app.Activity#findViewById Activity.findViewById()}.
             This must be a
             resource reference; typically you set this using the
             <code>@+</code> syntax to create a new ID resources.
             For example: <code>android:id="@+id/my_id"</code> which
             allows you to later retrieve the view
             with <code>findViewById(R.id.my_id)</code>. -->
        <attr name="id" />

        <!-- Supply a tag for the top-level view containing a String, to be retrieved
             later with {@link android.view.View#getTag View.getTag()} or
             searched for with {@link android.view.View#findViewWithTag
             View.findViewWithTag()}.  It is generally preferable to use
             IDs (through the android:id attribute) instead of tags because
             they are faster and allow for compile-time type checking. -->
        <attr name="tag" />

        <!-- The Transition that will be used to move Views out of the scene when the
             fragment is removed, hidden, or detached when not popping the back stack.
             Corresponds to {@link android.app.Fragment#setExitTransition(
             android.transition.Transition)} -->
        <attr name="fragmentExitTransition" format="reference"/>

        <!-- The Transition that will be used to move Views into the initial scene.
             Corresponds to {@link android.app.Fragment#setEnterTransition(
             android.transition.Transition)} -->
        <attr name="fragmentEnterTransition" format="reference"/>

        <!-- The Transition that will be used for shared elements transferred into the content
             Scene.
             Corresponds to {@link android.app.Fragment#setSharedElementEnterTransition(
             android.transition.Transition)} -->
        <attr name="fragmentSharedElementEnterTransition" format="reference"/>

        <!-- The Transition that will be used to move Views out of the scene when the Fragment is
             preparing to be removed, hidden, or detached because of popping the back stack.
             Corresponds to {@link android.app.Fragment#setReturnTransition(
             android.transition.Transition)} -->
        <attr name="fragmentReturnTransition" format="reference"/>

        <!-- The Transition that will be used for shared elements transferred back during a
             pop of the back stack. This Transition acts in the leaving Fragment.
             Corresponds to {@link android.app.Fragment#setSharedElementReturnTransition(
             android.transition.Transition)} -->
        <attr name="fragmentSharedElementReturnTransition" format="reference"/>

        <!-- The Transition that will be used to move Views in to the scene when returning due
             to popping a back stack.
             Corresponds to {@link android.app.Fragment#setReenterTransition(
             android.transition.Transition)} -->
        <attr name="fragmentReenterTransition" format="reference"/>

        <!-- Sets whether the enter and exit transitions should overlap when transitioning
             forward.
             Corresponds to {@link android.app.Fragment#setAllowEnterTransitionOverlap(
             boolean)} -->
        <attr name="fragmentAllowEnterTransitionOverlap" format="reference"/>

        <!-- Sets whether the enter and exit transitions should overlap when transitioning
             because of popping the back stack.
             Corresponds to {@link android.app.Fragment#setAllowReturnTransitionOverlap(
             boolean)} -->
        <attr name="fragmentAllowReturnTransitionOverlap" format="reference"/>
    </declare-styleable>

    <!-- Use <code>device-admin</code> as the root tag of the XML resource that
         describes a
         {@link android.app.admin.DeviceAdminReceiver}, which is
         referenced from its
         {@link android.app.admin.DeviceAdminReceiver#DEVICE_ADMIN_META_DATA}
         meta-data entry.  Described here are the attributes that can be
         included in that tag. -->
    <declare-styleable name="DeviceAdmin">
        <!-- Control whether the admin is visible to the user, even when it
             is not enabled.  This is true by default.  You may want to make
             it false if your admin does not make sense to be turned on
             unless some explicit action happens in your app. -->
        <attr name="visible" />
    </declare-styleable>

    <!-- Use <code>wallpaper</code> as the root tag of the XML resource that
         describes an
         {@link android.service.wallpaper.WallpaperService}, which is
         referenced from its
         {@link android.service.wallpaper.WallpaperService#SERVICE_META_DATA}
         meta-data entry.  Described here are the attributes that can be
         included in that tag. -->
    <declare-styleable name="Wallpaper">
        <attr name="settingsActivity" />

        <!-- Reference to the wallpaper's thumbnail bitmap. -->
        <attr name="thumbnail" format="reference" />

        <!-- Name of the author and/or source/collection of this component, for example,
             Art Collection, Picasso. -->
        <attr name="author" format="reference" />

        <!-- Short description of the component's purpose or behavior. -->
        <attr name="description" />

        <!-- Uri that specifies a link for further context of this wallpaper, for example,
             http://www.picasso.org. -->
        <attr name="contextUri" format="reference" />

        <!-- Title of the uri that specifies a link for further context of this wallpaper,
             for example, Explore collection. -->
        <attr name="contextDescription" format="reference" />

        <!-- Whether to show any metadata when previewing the wallpaper. If this value is
             set to true, any component that shows a preview of this live wallpaper should also show
             accompanying information like the title, the description, the author and the context
             description of this wallpaper so the user gets to know further information about this
             wallpaper. -->
        <attr name="showMetadataInPreview" format="boolean" />

    </declare-styleable>

    <!-- Use <code>dream</code> as the root tag of the XML resource that
         describes an
         {@link android.service.dreams.DreamService}, which is
         referenced from its
         {@link android.service.dreams.DreamService#DREAM_META_DATA}
         meta-data entry.  Described here are the attributes that can be
         included in that tag. -->
    <declare-styleable name="Dream">
        <!-- Component name of an activity that allows the user to modify
             the settings for this dream. -->
        <attr name="settingsActivity" />
    </declare-styleable>

    <!-- @SystemApi Use <code>trust-agent</code> as the root tag of the XML resource that
         describes an {@link android.service.trust.TrustAgentService}, which is
         referenced from its {@link android.service.trust.TrustAgentService#TRUST_AGENT_META_DATA}
         meta-data entry.  Described here are the attributes that can be included in that tag.
         @hide -->
    <declare-styleable name="TrustAgent">
        <!-- @SystemApi Component name of an activity that allows the user to modify
             the settings for this trust agent. @hide -->
        <attr name="settingsActivity" />
        <!-- @SystemApi Title for a preference that allows that user to launch the
             activity to modify trust agent settings. @hide -->
        <attr name="title" />
        <!-- @SystemApi Summary for the same preference as the title. @hide -->
        <attr name="summary" />
        <!-- @SystemApi Whether trust agent can unlock a user profile @hide -->
        <attr name="unlockProfile" format="boolean"/>
    </declare-styleable>

    <!-- =============================== -->
    <!-- Accounts package class attributes -->
    <!-- =============================== -->
    <eat-comment />

    <!-- Use <code>account-authenticator</code> as the root tag of the XML resource that
         describes an account authenticator.
     -->
    <declare-styleable name="AccountAuthenticator">
        <!-- The account type this authenticator handles. -->
        <attr name="accountType" format="string"/>
        <!-- The user-visible name of the authenticator. -->
        <attr name="label"/>
        <!-- The icon of the authenticator. -->
        <attr name="icon"/>
        <!-- Smaller icon of the authenticator. -->
        <attr name="smallIcon" format="reference"/>
        <!-- A preferences.xml file for authenticator-specific settings. -->
        <attr name="accountPreferences" format="reference"/>
        <!-- Account handles its own token storage and permissions.
             Default to false
          -->
        <attr name="customTokens" format="boolean"/>
    </declare-styleable>

    <!-- =============================== -->
    <!-- Accounts package class attributes -->
    <!-- =============================== -->
    <eat-comment />

    <!-- Use <code>account-authenticator</code> as the root tag of the XML resource that
         describes an account authenticator.
     -->
    <declare-styleable name="SyncAdapter">
        <!-- the authority of a content provider. -->
        <attr name="contentAuthority" format="string"/>
        <attr name="accountType"/>
        <attr name="userVisible" format="boolean"/>
        <attr name="supportsUploading" format="boolean"/>
        <!-- Set to true to tell the SyncManager that this SyncAdapter supports
             multiple simultaneous syncs for the same account type and authority.
             Otherwise the SyncManager will be sure not to issue a start sync request
             to this SyncAdapter if the SyncAdapter is already syncing another account.
             Defaults to false.
             -->
        <attr name="allowParallelSyncs" format="boolean"/>
        <!-- Set to true to tell the SyncManager to automatically call setIsSyncable(..., ..., 1)
             for the SyncAdapter instead of issuaing an initialization sync to the SyncAdapter.
             Defaults to false.
             -->
        <attr name="isAlwaysSyncable" format="boolean"/>
        <!-- If provided, specifies the action of the settings
             activity for this SyncAdapter.
             -->
        <attr name="settingsActivity"/>
    </declare-styleable>

    <!-- =============================== -->
    <!-- Autofill attributes -->
    <!-- =============================== -->
    <eat-comment />

    <!-- Use <code>autofill-service</code> as the root tag of the XML resource that describes a
         {@link android.service.autofill.AutofillService}, which is referenced from its
         {@link android.service.autofill#SERVICE_META_DATA} meta-data entry.
    -->
    <declare-styleable name="AutofillService">
        <!-- Fully qualified class name of an activity that allows the user to modify
             the settings for this service. -->
        <attr name="settingsActivity" />
    </declare-styleable>

    <!-- =============================== -->
    <!-- Contacts meta-data attributes -->
    <!-- =============================== -->
    <eat-comment />

    <!-- TODO: remove this deprecated styleable. -->
    <eat-comment />
    <declare-styleable name="Icon">
        <attr name="icon" />
        <attr name="mimeType" />
    </declare-styleable>

    <!-- TODO: remove this deprecated styleable -->
    <eat-comment />
    <declare-styleable name="IconDefault">
        <attr name="icon" />
    </declare-styleable>

    <!-- Maps a specific contact data MIME-type to styling information. -->
    <declare-styleable name="ContactsDataKind">
        <!-- Mime-type handled by this mapping. -->
        <attr name="mimeType" />
        <!-- Icon used to represent data of this kind. -->
        <attr name="icon" />
        <!-- Column in data table that summarizes this data. -->
        <attr name="summaryColumn" format="string" />
        <!-- Column in data table that contains details for this data. -->
        <attr name="detailColumn" format="string" />
        <!-- Flag indicating that detail should be built from SocialProvider. -->
        <attr name="detailSocialSummary" format="boolean" />
        <!-- Resource representing the term "All Contacts" (for example, "All Friends" or
        "All connections"). Optional (Default is "All Contacts"). -->
        <attr name="allContactsName" format="string" />
    </declare-styleable>

    <!-- =============================== -->
    <!-- TabSelector class attributes -->
    <!-- =============================== -->
    <eat-comment />

    <declare-styleable name="SlidingTab">
        <!-- Use "horizontal" for a row, "vertical" for a column.  The default is horizontal. -->
        <attr name="orientation" />
    </declare-styleable>

    <!-- =============================== -->
    <!-- GlowPadView class attributes -->
    <!-- =============================== -->
    <eat-comment />
    <declare-styleable name="GlowPadView">
        <!-- Reference to an array resource that be used as description for the targets around the circle.
             {@deprecated Removed.} -->
        <attr name="targetDescriptions" format="reference" />

        <!-- Reference to an array resource that be used to announce the directions with targets around the circle.
             {@deprecated Removed.} -->
        <attr name="directionDescriptions" format="reference" />
    </declare-styleable>

    <!-- =============================== -->
    <!-- Location package class attributes -->
    <!-- =============================== -->
    <eat-comment />

    <!-- Use <code>injected-location-setting</code> as the root tag of the XML resource that
         describes an injected "Location services" setting. Note that the status value (subtitle)
         for the setting is specified dynamically by a subclass of SettingInjectorService.
     -->
    <declare-styleable name="SettingInjectorService">
        <!-- The title for the preference. -->
        <attr name="title"/>
        <!-- The icon for the preference, should refer to all apps covered by the setting. Typically
             a generic icon for the developer. -->
        <attr name="icon"/>
        <!-- The activity to launch when the setting is clicked on. -->
        <attr name="settingsActivity"/>
    </declare-styleable>

    <!-- =============================== -->
    <!-- LockPatternView class attributes -->
    <!-- =============================== -->
    <eat-comment />

    <declare-styleable name="LockPatternView">
        <!-- Aspect to use when drawing LockPatternView. Choices are "square"(default), "lock_width"
             or "lock_height" -->
        <attr name="aspect" format="string" />
        <!-- Color to use when drawing LockPatternView paths. -->
        <attr name="pathColor" format="color|reference" />
        <!-- The regular pattern color -->
        <attr name="regularColor" format="color|reference" />
        <!-- The error color -->
        <attr name="errorColor" format="color|reference" />
        <!-- The success color -->
        <attr name="successColor" format="color|reference"/>
    </declare-styleable>

    <!-- Use <code>recognition-service</code> as the root tag of the XML resource that
         describes a {@link android.speech.RecognitionService}, which is referenced from
         its {@link android.speech.RecognitionService#SERVICE_META_DATA} meta-data entry.
         Described here are the attributes that can be included in that tag. -->
    <declare-styleable name="RecognitionService">
        <attr name="settingsActivity" />
    </declare-styleable>

    <!-- Use <code>voice-interaction-service</code> as the root tag of the XML resource that
         describes a {@link android.service.voice.VoiceInteractionService}, which is referenced from
         its {@link android.service.voice.VoiceInteractionService#SERVICE_META_DATA} meta-data entry.
         Described here are the attributes that can be included in that tag. -->
    <declare-styleable name="VoiceInteractionService">
        <!-- The service that hosts active voice interaction sessions.  This is required. -->
        <attr name="sessionService" format="string" />
        <!-- The service that provides voice recognition.  This is required.  When the user
             selects this voice interaction service, they will also be implicitly selecting
             the component here for their recognition service. -->
        <attr name="recognitionService" format="string" />
        <attr name="settingsActivity" />
        <!-- Flag indicating whether this voice interaction service is capable of handling the
             assist action. -->
        <attr name="supportsAssist" format="boolean" />
        <!-- Flag indicating whether this voice interaction service is capable of being launched
             from the keyguard. -->
        <attr name="supportsLaunchVoiceAssistFromKeyguard" format="boolean" />
        <!-- Flag indicating whether this voice interaction service can handle local voice
             interaction requests from an Activity. This flag is new in
             {@link android.os.Build.VERSION_CODES#N} and not used in previous versions. -->
        <attr name="supportsLocalInteraction" format="boolean" />
    </declare-styleable>

    <!-- Use <code>voice-enrollment-application</code>
         as the root tag of the XML resource that escribes the supported keyphrases (hotwords)
         by the enrollment application.
         Described here are the attributes that can be included in that tag.
         @hide
         @SystemApi -->
    <declare-styleable name="VoiceEnrollmentApplication">
        <!-- A globally unique ID for the keyphrase. @hide @SystemApi -->
        <attr name="searchKeyphraseId" format="integer" />
        <!-- The actual keyphrase/hint text, or empty if not keyphrase dependent. @hide @SystemApi -->
        <attr name="searchKeyphrase" format="string" />
        <!-- A comma separated list of BCP-47 language tag for locales that are supported
             for this keyphrase, or empty if not locale dependent. @hide @SystemApi -->
        <attr name="searchKeyphraseSupportedLocales" format="string" />
        <!-- Flags for supported recognition modes. @hide @SystemApi -->
        <attr name="searchKeyphraseRecognitionFlags">
            <flag name="none" value="0" />
            <flag name="voiceTrigger" value="0x1" />
            <flag name="userIdentification" value="0x2" />
        </attr>
    </declare-styleable>

    <!-- Attributes used to style the Action Bar. -->
    <declare-styleable name="ActionBar">
        <!-- The type of navigation to use. -->
        <attr name="navigationMode">
            <!-- Normal static title text. -->
            <enum name="normal" value="0" />
            <!-- The action bar will use a selection list for navigation. -->
            <enum name="listMode" value="1" />
            <!-- The action bar will use a series of horizontal tabs for navigation. -->
            <enum name="tabMode" value="2" />
        </attr>
        <!-- Options affecting how the action bar is displayed. -->
        <attr name="displayOptions">
            <flag name="none" value="0" />
            <flag name="useLogo" value="0x1" />
            <flag name="showHome" value="0x2" />
            <flag name="homeAsUp" value="0x4" />
            <flag name="showTitle" value="0x8" />
            <flag name="showCustom" value="0x10" />
            <flag name="disableHome" value="0x20" />
        </attr>
        <!-- Specifies title text used for navigationMode="normal". -->
        <attr name="title" />
        <!-- Specifies subtitle text used for navigationMode="normal". -->
        <attr name="subtitle" format="string" />
        <!-- Specifies a style to use for title text. -->
        <attr name="titleTextStyle" format="reference" />
        <!-- Specifies a style to use for subtitle text. -->
        <attr name="subtitleTextStyle" format="reference" />
        <!-- Specifies the drawable used for the application icon. -->
        <attr name="icon" />
        <!-- Specifies the drawable used for the application logo. -->
        <attr name="logo" />
        <!-- Specifies the drawable used for item dividers. -->
        <attr name="divider" />
        <!-- Specifies a background drawable for the action bar. -->
        <attr name="background" />
        <!-- Specifies a background drawable for a second stacked row of the action bar. -->
        <attr name="backgroundStacked" format="reference|color" />
        <!-- Specifies a background drawable for the bottom component of a split action bar. -->
        <attr name="backgroundSplit" format="reference|color" />
        <!-- Specifies a layout for custom navigation. Overrides navigationMode. -->
        <attr name="customNavigationLayout" format="reference" />
        <!-- Specifies a fixed height. -->
        <attr name="height" />
        <!-- Specifies a layout to use for the "home" section of the action bar. -->
        <attr name="homeLayout" format="reference" />
        <!-- Specifies a style resource to use for an embedded progress bar. -->
        <attr name="progressBarStyle" />
        <!-- Specifies a style resource to use for an indeterminate progress spinner. -->
        <attr name="indeterminateProgressStyle" format="reference" />
        <!-- Specifies the horizontal padding on either end for an embedded progress bar. -->
        <attr name="progressBarPadding" format="dimension" />
        <!-- Up navigation glyph. -->
        <attr name="homeAsUpIndicator" />
        <!-- Specifies padding that should be applied to the left and right sides of
             system-provided items in the bar. -->
        <attr name="itemPadding" format="dimension" />
        <!-- Set true to hide the action bar on a vertical nested scroll of content. -->
        <attr name="hideOnContentScroll" format="boolean" />
        <!-- Minimum inset for content views within a bar. Navigation buttons and
             menu views are excepted. Only valid for some themes and configurations. -->
        <attr name="contentInsetStart" format="dimension" />
        <!-- Minimum inset for content views within a bar. Navigation buttons and
             menu views are excepted. Only valid for some themes and configurations. -->
        <attr name="contentInsetEnd" format="dimension" />
        <!-- Minimum inset for content views within a bar. Navigation buttons and
             menu views are excepted. Only valid for some themes and configurations. -->
        <attr name="contentInsetLeft" format="dimension" />
        <!-- Minimum inset for content views within a bar. Navigation buttons and
             menu views are excepted. Only valid for some themes and configurations. -->
        <attr name="contentInsetRight" format="dimension" />
        <!-- Minimum inset for content views within a bar when a navigation button
             is present, such as the Up button. Only valid for some themes and configurations. -->
        <attr name="contentInsetStartWithNavigation" format="dimension" />
        <!-- Minimum inset for content views within a bar when actions from a menu
             are present. Only valid for some themes and configurations. -->
        <attr name="contentInsetEndWithActions" format="dimension" />
        <!-- Elevation for the action bar itself. -->
        <attr name="elevation" />
        <!-- Reference to a theme that should be used to inflate popups
             shown by widgets in the action bar. -->
        <attr name="popupTheme" />
    </declare-styleable>

    <declare-styleable name="ActionMode">
        <!-- Specifies a style to use for title text. -->
        <attr name="titleTextStyle" />
        <!-- Specifies a style to use for subtitle text. -->
        <attr name="subtitleTextStyle" />
        <!-- Specifies a background for the action mode bar. -->
        <attr name="background" />
        <!-- Specifies a background for the split action mode bar. -->
        <attr name="backgroundSplit" />
        <!-- Specifies a fixed height for the action mode bar. -->
        <attr name="height" />
        <!-- Specifies a layout to use for the "close" item at the starting edge. -->
        <attr name="closeItemLayout" format="reference" />
    </declare-styleable>

    <declare-styleable name="SearchView">
        <!-- The layout to use for the search view. -->
        <attr name="layout" />
        <!-- The default state of the SearchView. If true, it will be iconified when not in
             use and expanded when clicked. -->
        <attr name="iconifiedByDefault" format="boolean" />
        <!-- An optional maximum width of the SearchView. -->
        <attr name="maxWidth" />
        <!-- An optional query hint string to be displayed in the empty query field. -->
        <attr name="queryHint" format="string" />
        <!-- Default query hint used when {@code queryHint} is undefined and
             the search view's {@code SearchableInfo} does not provide a hint.
             @hide -->
        <attr name="defaultQueryHint" format="string" />
        <!-- The IME options to set on the query text field. -->
        <attr name="imeOptions" />
        <!-- The input type to set on the query text field. -->
        <attr name="inputType" />
        <!-- Close button icon. -->
        <attr name="closeIcon" format="reference" />
        <!-- Go button icon. -->
        <attr name="goIcon" format="reference" />
        <!-- Search icon. -->
        <attr name="searchIcon" format="reference" />
        <!-- Search icon displayed as a text field hint. -->
        <attr name="searchHintIcon" format="reference" />
        <!-- Voice button icon. -->
        <attr name="voiceIcon" format="reference" />
        <!-- Commit icon shown in the query suggestion row. -->
        <attr name="commitIcon" format="reference" />
        <!-- Layout for query suggestion rows. -->
        <attr name="suggestionRowLayout" format="reference" />
        <!-- Background for the section containing the search query. -->
        <attr name="queryBackground" format="reference" />
        <!-- Background for the section containing the action (for example, voice search). -->
        <attr name="submitBackground" format="reference" />
    </declare-styleable>

    <declare-styleable name="Switch">
        <!-- Drawable to use as the "thumb" that switches back and forth. -->
        <attr name="thumb" />
        <!-- Tint to apply to the thumb. -->
        <attr name="thumbTint" />
        <!-- Blending mode used to apply the thumb tint. -->
        <attr name="thumbTintMode" />
        <!-- Drawable to use as the "track" that the switch thumb slides within. -->
        <attr name="track" format="reference" />
        <!-- Tint to apply to the track. -->
        <attr name="trackTint" format="color" />
        <!-- Blending mode used to apply the track tint. -->
        <attr name="trackTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
        <!-- Text to use when the switch is in the checked/"on" state. -->
        <attr name="textOn" />
        <!-- Text to use when the switch is in the unchecked/"off" state. -->
        <attr name="textOff" />
        <!-- Amount of padding on either side of text within the switch thumb. -->
        <attr name="thumbTextPadding" format="dimension" />
        <!-- TextAppearance style for text displayed on the switch thumb. -->
        <attr name="switchTextAppearance" format="reference" />
        <!-- Minimum width for the switch component. -->
        <attr name="switchMinWidth" format="dimension" />
        <!-- Minimum space between the switch and caption text. -->
        <attr name="switchPadding" format="dimension" />
        <!-- Whether to split the track and leave a gap for the thumb drawable. -->
        <attr name="splitTrack" />
        <!-- Whether to draw on/off text. -->
        <attr name="showText" format="boolean" />
    </declare-styleable>

    <declare-styleable name="Pointer">
        <!-- Reference to a pointer icon drawable with STYLE_ARROW. -->
        <attr name="pointerIconArrow" format="reference" />
        <!-- Reference to a pointer icon drawable with STYLE_SPOT_HOVER. -->
        <attr name="pointerIconSpotHover" format="reference" />
        <!-- Reference to a pointer icon drawable with STYLE_SPOT_TOUCH. -->
        <attr name="pointerIconSpotTouch" format="reference" />
        <!-- Reference to a pointer icon drawable with STYLE_SPOT_ANCHOR. -->
        <attr name="pointerIconSpotAnchor" format="reference" />
        <!-- Reference to a pointer drawable with STYLE_CONTEXT_MENU. -->
        <attr name="pointerIconContextMenu" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_HAND. -->
        <attr name="pointerIconHand" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_HELP. -->
        <attr name="pointerIconHelp" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_WAIT. -->
        <attr name="pointerIconWait" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_CELL. -->
        <attr name="pointerIconCell" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_CROSSHAIR. -->
        <attr name="pointerIconCrosshair" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_TEXT. -->
        <attr name="pointerIconText" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_VERTICAL_TEXT. -->
        <attr name="pointerIconVerticalText" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_ALIAS. -->
        <attr name="pointerIconAlias" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_COPY. -->
        <attr name="pointerIconCopy" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_NODROP. -->
        <attr name="pointerIconNodrop" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_ALL_SCROLL. -->
        <attr name="pointerIconAllScroll" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_HORIZONTAL_DOUBLE_ARROW. -->
        <attr name="pointerIconHorizontalDoubleArrow" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_VERTICAL_DOUBLE_ARROW. -->
        <attr name="pointerIconVerticalDoubleArrow" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW. -->
        <attr name="pointerIconTopRightDiagonalDoubleArrow" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW. -->
        <attr name="pointerIconTopLeftDiagonalDoubleArrow" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_ZOOM_IN. -->
        <attr name="pointerIconZoomIn" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_ZOOM_OUT. -->
        <attr name="pointerIconZoomOut" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_GRAB. -->
        <attr name="pointerIconGrab" format="reference"/>
        <!-- Reference to a pointer drawable with STYLE_GRABBING. -->
        <attr name="pointerIconGrabbing" format="reference"/>
    </declare-styleable>

    <declare-styleable name="PointerIcon">
        <!-- Drawable to use as the icon bitmap. -->
        <attr name="bitmap" format="reference" />
        <!-- X coordinate of the icon hot spot. -->
        <attr name="hotSpotX" format="dimension" />
        <!-- Y coordinate of the icon hot spot. -->
        <attr name="hotSpotY" format="dimension" />
    </declare-styleable>

    <declare-styleable name="Storage">
        <!-- path to mount point for the storage. -->
        <attr name="mountPoint" format="string" />
        <!-- user visible description of the storage. -->
        <attr name="storageDescription" format="string" />
        <!-- true if the storage is the primary external storage. -->
        <attr name="primary" format="boolean" />
        <!-- true if the storage is removable. -->
        <attr name="removable" format="boolean" />
        <!-- true if the storage is emulated via the FUSE sdcard daemon. -->
        <attr name="emulated" format="boolean" />
        <!-- number of megabytes of storage MTP should reserve for free storage
             (used for emulated storage that is shared with system's data partition). -->
        <attr name="mtpReserve" format="integer" />
        <!-- true if the storage can be shared via USB mass storage. -->
        <attr name="allowMassStorage" format="boolean" />
        <!-- maximum file size for the volume in megabytes, zero or unspecified if it is unbounded. -->
        <attr name="maxFileSize" format="integer" />
    </declare-styleable>

    <declare-styleable name="SwitchPreference">
        <!-- The summary for the Preference in a PreferenceActivity screen when the
             SwitchPreference is checked. If separate on/off summaries are not
             needed, the summary attribute can be used instead. -->
        <attr name="summaryOn" />
        <!-- The summary for the Preference in a PreferenceActivity screen when the
             SwitchPreference is unchecked. If separate on/off summaries are not
             needed, the summary attribute can be used instead. -->
        <attr name="summaryOff" />
        <!-- The text used on the switch itself when in the "on" state.
             This should be a very SHORT string, as it appears in a small space. -->
        <attr name="switchTextOn" format="string" />
        <!-- The text used on the switch itself when in the "off" state.
             This should be a very SHORT string, as it appears in a small space. -->
        <attr name="switchTextOff" format="string" />
        <!-- The state (true for on, or false for off) that causes dependents to be disabled. By default,
             dependents will be disabled when this is unchecked, so the value of this preference is false. -->
        <attr name="disableDependentsState" />
    </declare-styleable>

    <declare-styleable name="SeekBarPreference">
        <attr name="layout" />
        <!-- Attribute indicating whether the slider within this preference can be adjusted, that is
        pressing left/right keys when this preference is focused will move the slider accordingly
        (for example, inline adjustable preferences). False, if the slider within the preference is
        read-only and cannot be adjusted. By default, the seekbar is adjustable. -->
        <attr name="adjustable" format="boolean" />
        <!-- Flag indicating whether the TextView next to the seekbar that shows the current seekbar value will be
        displayed. If true, the view is VISIBLE; if false, the view will be GONE. By default, this view is VISIBLE. -->
        <attr name="showSeekBarValue" format="boolean" />
    </declare-styleable>

    <!-- Base attributes available to PreferenceFragment. -->
    <declare-styleable name="PreferenceFragment">
        <!-- The layout for the PreferenceFragment. This should rarely need to be changed. -->
        <attr name="layout" />
        <attr name="divider" />
    </declare-styleable>

    <!-- Base attributes available to PreferenceScreen. -->
    <declare-styleable name="PreferenceScreen">
        <!-- The layout for the PreferenceScreen. This should rarely need to be changed. -->
        <attr name="screenLayout" format="reference" />
        <attr name="divider" />
    </declare-styleable>

    <!-- Base attributes available to PreferenceActivity. -->
    <declare-styleable name="PreferenceActivity">
        <!-- The layout for the Preference Activity. This should rarely need to be changed. -->
        <attr name="layout" />
        <!-- The layout for the Preference Header. This should rarely need to be changed. -->
        <attr name="headerLayout" format="reference" />
        <!-- true if the Icon view will be removed when there is none and thus not showing
             the fixed margins. -->
        <attr name="headerRemoveIconIfEmpty" format="boolean" />
    </declare-styleable>

    <!-- Use <code>tts-engine</code> as the root tag of the XML resource that
         describes a text to speech engine implemented as a subclass of
         {@link android.speech.tts.TextToSpeechService}.

         The XML resource must be referenced from its
         {@link android.speech.tts.TextToSpeech.Engine#SERVICE_META_DATA} meta-data
         entry. -->
    <declare-styleable name="TextToSpeechEngine">
        <attr name="settingsActivity" />
    </declare-styleable>

    <!-- Use <code>keyboard-layouts</code> as the root tag of the XML resource that
         describes a collection of keyboard layouts provided by an application.
         Each keyboard layout is declared by a <code>keyboard-layout</code> tag
         with these attributes.

         The XML resource that contains the keyboard layouts must be referenced from its
         {@link android.hardware.input.InputManager#META_DATA_KEYBOARD_LAYOUTS}
         meta-data entry used with broadcast receivers for
         {@link android.hardware.input.InputManager#ACTION_QUERY_KEYBOARD_LAYOUTS}. -->
    <declare-styleable name="KeyboardLayout">
        <!-- The name of the keyboard layout, must be unique in the receiver. -->
        <attr name="name" />
        <!-- The display label of the keyboard layout. -->
        <attr name="label" />
        <!-- The key character map file resource. -->
        <attr name="keyboardLayout" format="reference" />
        <!-- The locales the given keyboard layout corresponds to. -->
        <attr name="locale" format="string" />
        <!-- The vendor ID of the hardware the given layout corresponds to. @hide -->
        <attr name="vendorId" format="integer" />
        <!-- The product ID of the hardware the given layout corresponds to. @hide -->
        <attr name="productId" format="integer" />
    </declare-styleable>

    <declare-styleable name="MediaRouteButton">
        <!-- This drawable is a state list where the "activated" state
             indicates active media routing. Non-activated indicates
             that media is playing to the local device only.
             @hide -->
        <attr name="externalRouteEnabledDrawable" format="reference" />

        <!-- The types of media routes the button and its resulting
             chooser will filter by. -->
        <attr name="mediaRouteTypes" format="integer">
            <!-- Allow selection of live audio routes. -->
            <enum name="liveAudio" value="0x1" />
            <!-- Allow selection of user (app-specified) routes. -->
            <enum name="user" value="0x800000" />
        </attr>

        <attr name="minWidth" />
        <attr name="minHeight" />
    </declare-styleable>

    <!-- PagedView specific attributes. These attributes are used to customize
         a PagedView view in XML files. -->
    <declare-styleable name="PagedView">
        <!-- The space between adjacent pages of the PagedView. -->
        <attr name="pageSpacing" format="dimension" />
        <!-- The padding for the scroll indicator area. -->
        <attr name="scrollIndicatorPaddingLeft" format="dimension" />
        <attr name="scrollIndicatorPaddingRight" format="dimension" />
    </declare-styleable>

    <declare-styleable name="KeyguardGlowStripView">
        <attr name="dotSize" format="dimension" />
        <attr name="numDots" format="integer" />
        <attr name="glowDot" format="reference" />
        <attr name="leftToRight" format="boolean" />
    </declare-styleable>

    <!-- Some child types have special behavior. -->
    <attr name="layout_childType">
        <!-- No special behavior. Layout will proceed as normal. -->
        <enum name="none" value="0" />
        <!-- Widget container.
             This will be resized in response to certain events. -->
        <enum name="widget" value="1" />
        <!-- Security challenge container.
             This will be dismissed/shown in response to certain events,
             possibly obscuring widget elements. -->
        <enum name="challenge" value="2" />
        <!-- User switcher.
             This will consume space from the total layout area. -->
        <enum name="userSwitcher" value="3" />
        <!-- Scrim. This will block access to child views that
             come before it in the child list in bouncer mode. -->
        <enum name="scrim" value="4" />
        <!-- The home for widgets. All widgets will be descendents of this. -->
        <enum name="widgets" value="5" />
        <!-- This is a handle that is used for expanding the
             security challenge container when it is collapsed. -->
        <enum name="expandChallengeHandle" value="6" />
        <!-- Delete drop target.  This will be the drop target to delete pages. -->
        <enum name="pageDeleteDropTarget" value="7" />
    </attr>

    <!-- Attributes that can be used with <code>&lt;FragmentBreadCrumbs&gt;</code>
    tags. -->
    <declare-styleable name="FragmentBreadCrumbs">
        <attr name="gravity" />
        <attr name="itemLayout" format="reference" />
        <attr name="itemColor" format="color|reference" />
    </declare-styleable>

    <declare-styleable name="Toolbar">
        <attr name="titleTextAppearance" format="reference" />
        <attr name="subtitleTextAppearance" format="reference" />
        <attr name="title" />
        <attr name="subtitle" />
        <attr name="gravity" />
        <!--  Specifies extra space on the left, start, right and end sides
              of the toolbar's title. Margin values should be positive. -->
        <attr name="titleMargin" format="dimension" />
        <!--  Specifies extra space on the start side of the toolbar's title.
              If both this attribute and titleMargin are specified, then this
              attribute takes precedence. Margin values should be positive. -->
        <attr name="titleMarginStart" format="dimension" />
        <!--  Specifies extra space on the end side of the toolbar's title.
              If both this attribute and titleMargin are specified, then this
              attribute takes precedence. Margin values should be positive. -->
        <attr name="titleMarginEnd" format="dimension" />
        <!--  Specifies extra space on the top side of the toolbar's title.
              If both this attribute and titleMargin are specified, then this
              attribute takes precedence. Margin values should be positive. -->
        <attr name="titleMarginTop" format="dimension" />
        <!--  Specifies extra space on the bottom side of the toolbar's title.
              If both this attribute and titleMargin are specified, then this
              attribute takes precedence. Margin values should be positive. -->
        <attr name="titleMarginBottom" format="dimension" />
        <attr name="contentInsetStart" />
        <attr name="contentInsetEnd" />
        <attr name="contentInsetLeft" />
        <attr name="contentInsetRight" />
        <attr name="contentInsetStartWithNavigation" />
        <attr name="contentInsetEndWithActions" />
        <attr name="maxButtonHeight" format="dimension" />
        <attr name="navigationButtonStyle" format="reference" />
        <attr name="buttonGravity">
            <!-- 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" />
        </attr>
        <!-- Icon drawable to use for the collapse button. -->
        <attr name="collapseIcon" format="reference" />
        <!-- Text to set as the content description for the collapse button. -->
        <attr name="collapseContentDescription" format="string" />
        <!-- Reference to a theme that should be used to inflate popups
             shown by widgets in the toolbar. -->
        <attr name="popupTheme" format="reference" />
        <!-- Icon drawable to use for the navigation button located at
             the start of the toolbar. -->
        <attr name="navigationIcon" format="reference" />
        <!-- Text to set as the content description for the navigation button
             located at the start of the toolbar. -->
        <attr name="navigationContentDescription" format="string" />
        <!-- Drawable to set as the logo that appears at the starting side of
             the Toolbar, just after the navigation button. -->
        <attr name="logo" />
        <!-- A content description string to describe the appearance of the
             associated logo image. -->
        <attr name="logoDescription" format="string" />
        <!-- A color to apply to the title string. -->
        <attr name="titleTextColor" format="color" />
        <!-- A color to apply to the subtitle string. -->
        <attr name="subtitleTextColor" format="color" />
    </declare-styleable>

    <declare-styleable name="Toolbar_LayoutParams">
        <attr name="layout_gravity" />
    </declare-styleable>

    <declare-styleable name="ActionBar_LayoutParams">
        <attr name="layout_gravity" />
    </declare-styleable>

    <!-- Used as a filter array on the theme to pull out only the EdgeEffect-relevant bits. -->
    <declare-styleable name="EdgeEffect">
        <attr name="colorEdgeEffect" />
    </declare-styleable>

    <!-- Use <code>tv-input</code> as the root tag of the XML resource that describes a
         {@link android.media.tv.TvInputService}, which is referenced from its
         {@link android.media.tv.TvInputService#SERVICE_META_DATA} meta-data entry.
         Described here are the attributes that can be included in that tag. -->
    <declare-styleable name="TvInputService">
        <!-- Component name of an activity that allows the user to set up this service. -->
        <attr name="setupActivity" format="string" />
        <!-- Component name of an activity that allows the user to modify the settings for this
             service.
             {@deprecated This value is deprecated and not used by the framework starting from API
                         level 26. Use setupActivity instead.} -->
        <attr name="settingsActivity" />
        <!-- Attribute whether the TV input service can record programs. This value can be changed
             at runtime by calling
             {@link android.media.tv.TvInputManager#updateTvInputInfo(android.media.tv.TvInputInfo)}. -->
        <attr name="canRecord" format="boolean" />
        <!-- The number of tuners that the TV input service is associated with. This value can be
             changed at runtime by calling
             {@link android.media.tv.TvInputManager#updateTvInputInfo(android.media.tv.TvInputInfo)}. -->
        <attr name="tunerCount" format="integer" />
    </declare-styleable>

    <!-- Attributes that can be used with <code>rating-system-definition</code> tags inside of the
         XML resource that describes TV content rating of a {@link android.media.tv.TvInputService},
         which is referenced from its
         {@link android.media.tv.TvInputManager#META_DATA_CONTENT_RATING_SYSTEMS}. -->
    <declare-styleable name="RatingSystemDefinition">
        <!-- The unique name of the content rating system. -->
        <attr name="name" />
        <!-- The title of the content rating system which is shown to the user. -->
        <attr name="title" />
        <!-- The short description of the content rating system. -->
        <attr name="description" />
        <!-- The country code associated with the content rating system, which consists of two
             uppercase letters that conform to the ISO 3166 standard. -->
        <attr name="country" format="string" />
    </declare-styleable>

    <!-- Attributes that can be used with <code>rating-definition</code> tags inside of the XML
         resource that describes TV content rating of a {@link android.media.tv.TvInputService},
         which is referenced from its
         {@link android.media.tv.TvInputManager#META_DATA_CONTENT_RATING_SYSTEMS}. -->
    <declare-styleable name="RatingDefinition">
        <!-- The unique name of the content rating. -->
        <attr name="name" />
        <!-- The title of the content rating which is shown to the user. -->
        <attr name="title" />
        <!-- The short description of the content rating. -->
        <attr name="description" />
        <!-- The age associated with the content rating. The content of this rating is suitable for
             people of this age or above. -->
        <attr name="contentAgeHint" format="integer" />
    </declare-styleable>

    <declare-styleable name="ResolverDrawerLayout">
        <attr name="maxWidth" />
        <attr name="maxCollapsedHeight" format="dimension" />
        <attr name="maxCollapsedHeightSmall" format="dimension" />
    </declare-styleable>

    <declare-styleable name="MessagingLinearLayout">
        <attr name="spacing" />
    </declare-styleable>

    <declare-styleable name="DateTimeView">
        <attr name="showRelative" format="boolean" />
    </declare-styleable>

    <declare-styleable name="ResolverDrawerLayout_LayoutParams">
        <attr name="layout_alwaysShow" format="boolean" />
        <attr name="layout_ignoreOffset" format="boolean" />
        <attr name="layout_gravity" />
        <attr name="layout_hasNestedScrollIndicator" format="boolean" />
    </declare-styleable>

    <!-- @hide -->
    <declare-styleable name="Lighting">
        <attr name="lightY" />
        <attr name="lightZ" />
        <attr name="lightRadius" />
        <attr name="ambientShadowAlpha" />
        <attr name="spotShadowAlpha" />
    </declare-styleable>

    <declare-styleable name="RestrictionEntry">
        <attr name="key" />
        <attr name="restrictionType">
            <enum name="hidden" value="0" />
            <enum name="bool" value="1" />
            <enum name="choice" value="2" />
            <enum name="multi-select" value="4" />
            <enum name="integer" value="5" />
            <enum name="string" value="6" />
            <enum name="bundle" value="7" />
            <enum name="bundle_array" value="8" />
        </attr>
        <attr name="title" />
        <attr name="description" />
        <attr name="defaultValue" />
        <attr name="entries" />
        <attr name="entryValues" />
    </declare-styleable>

    <!-- Used to describe the gradient for fill or stroke in a path of VectorDrawable. -->
    <declare-styleable name="GradientColor">
        <!-- Start color of the gradient. -->
        <attr name="startColor" />
        <!-- Optional center color. -->
        <attr name="centerColor" />
        <!-- End color of the gradient. -->
        <attr name="endColor" />
        <!-- Type of gradient. The default type is linear. -->
        <attr name="type" />

        <!-- Only applied to RadialGradient-->
        <!-- Radius of the gradient, used only with radial gradient. -->
        <attr name="gradientRadius" />

        <!-- Only applied to SweepGradient / RadialGradient-->
        <!-- X coordinate of the center of the gradient within the path. -->
        <attr name="centerX" />
        <!-- Y coordinate of the center of the gradient within the path. -->
        <attr name="centerY" />

        <!-- LinearGradient specific -->
        <!-- X coordinate of the start point origin of the gradient.
             Defined in same coordinates as the path itself -->
        <attr name="startX" format="float" />
        <!-- Y coordinate of the start point of the gradient within the shape.
             Defined in same coordinates as the path itself -->
        <attr name="startY" format="float" />
        <!-- X coordinate of the end point origin of the gradient.
             Defined in same coordinates as the path itself -->
        <attr name="endX" format="float" />
        <!-- Y coordinate of the end point of the gradient within the shape.
             Defined in same coordinates as the path itself -->
        <attr name="endY" format="float" />

        <!-- Defines the tile mode of the gradient. SweepGradient don't support tiling. -->
        <attr name="tileMode"/>
    </declare-styleable>

    <!-- Describes an item of a GradientColor. Minimally need 2 items to define the gradient
         Colors defined in <item> override the simple color attributes such as
         "startColor / centerColor / endColor" are ignored. -->
    <declare-styleable name="GradientColorItem">
        <!-- The offset (or ratio) of this current color item inside the gradient.
             The value is only meaningful when it is between 0 and 1. -->
        <attr name="offset" format="float" />
        <!-- The current color for the offset inside the gradient. -->
        <attr name="color" />
    </declare-styleable>

    <!-- @hide Attributes which will be read by the Activity to intialize the
               base activity TaskDescription. -->
    <declare-styleable name="ActivityTaskDescription">
        <!-- @hide From Theme.colorPrimary, used for the TaskDescription primary
                   color. -->
        <attr name="colorPrimary" />
        <!-- @hide From Theme.colorBackground, used for the TaskDescription background
                   color. -->
        <attr name="colorBackground" />
        <!-- @hide From Theme.statusBarColor, used for the TaskDescription status bar color. -->
        <attr name="statusBarColor"/>
        <!-- @hide From Theme.navigationBarColor, used for the TaskDescription navigation bar
                   color. -->
        <attr name="navigationBarColor"/>
    </declare-styleable>

    <declare-styleable name="Shortcut">
        <attr name="shortcutId" format="string" />
        <attr name="enabled" />
        <attr name="icon" />
        <attr name="shortcutShortLabel" format="reference" />
        <attr name="shortcutLongLabel" format="reference" />
        <attr name="shortcutDisabledMessage" format="reference" />
    </declare-styleable>

    <declare-styleable name="ShortcutCategories">
        <attr name="name" />
    </declare-styleable>

    <!-- Attributes that are read when parsing a <font> tag, which is a child of
         <font-family>. This represents an actual font file and its attributes. -->
    <declare-styleable name="FontFamilyFont">
        <!-- The style of the given font file. This will be used when the font is being loaded into
         the font stack and will override any style information in the font's header tables. If
         unspecified, the value in the font's header tables will be used. -->
        <attr name="fontStyle">
            <enum name="normal" value="0" />
            <enum name="italic" value="1" />
        </attr>
        <!-- The reference to the font file to be used. This should be a file in the res/font folder
         and should therefore have an R reference value. E.g. @font/myfont -->
        <attr name="font" format="reference" />
        <!-- The weight of the given font file. This will be used when the font is being loaded into
         the font stack and will override any weight information in the font's header tables. Must
         be a positive number, a multiple of 100, and between 100 and 900, inclusive. The most
         common values are 400 for regular weight and 700 for bold weight. If unspecified, the value
         in the font's header tables will be used. -->
        <attr name="fontWeight" format="integer" />
    </declare-styleable>

    <!-- Attributes that are read when parsing a <fontfamily> tag. -->
    <declare-styleable name="FontFamily">
        <!-- The authority of the Font Provider to be used for the request. -->
        <attr name="fontProviderAuthority" format="string" />
        <!-- The package for the Font Provider to be used for the request. This is used to verify
        the identity of the provider. -->
        <attr name="fontProviderPackage" format="string" />
        <!-- The query to be sent over to the provider. Refer to your font provider's documentation
        on the format of this string. -->
        <attr name="fontProviderQuery" format="string" />
        <!-- The sets of hashes for the certificates the provider should be signed with. This is
        used to verify the identity of the provider, and is only required if the provider is not
        part of the system image. This value may point to one list or a list of lists, where each
        individual list represents one collection of signature hashes. Refer to your font provider's
        documentation for these values. -->
        <attr name="fontProviderCerts" format="reference" />
    </declare-styleable>

    <!-- @hide -->
    <declare-styleable name="RecyclerView">
        <attr name="layoutManager" format="string" />
        <attr name="orientation" />
        <attr name="descendantFocusability" />
        <attr name="spanCount" format="integer"/>
        <attr name="reverseLayout" format="boolean" />
        <attr name="stackFromEnd" format="boolean" />
    </declare-styleable>

    <!-- @hide -->
    <declare-styleable name="NotificationTheme">
        <attr name="notificationHeaderStyle" format="reference" />
        <attr name="notificationHeaderTextAppearance" format="reference" />
        <attr name="notificationHeaderIconSize" format="dimension" />
    </declare-styleable>

    <attr name="lockPatternStyle" format="reference" />
</resources>
