<?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" />
        <!-- When windowBlurBehindEnabled is set, this is the amount of blur to apply
             behind the window. The range is from 0, which means no blur, to 150.  -->
        <attr name="windowBlurBehindRadius" format="dimension"/>
        <!-- If set, everything behind the window will be blurred with radius
             windowBackgroundBlurRadius. -->
        <attr name="windowBlurBehindEnabled" format="boolean" />


        <!-- Color of background imagery used for popup windows. -->
        <attr name="colorPopupBackground" format="color" />
        <!-- Color used for list divider. -->
        <attr name="colorListDivider" format="color" />
        <!-- Opacity used for list divider. -->
        <attr name="opacityListDivider" format="color" />

        <!-- =========== -->
        <!-- 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 and thickness for grammar error suggestion -->
        <attr name="textAppearanceGrammarErrorSuggestion" 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|color" />
        <!-- 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 in multi-window mode. -->
        <attr name="windowBackgroundFallback" format="reference|color" />
        <!-- Blur the screen behind the window with the bounds of the window.
             The radius defines the size of the neighbouring area, from which pixels will be
             averaged to form the final color for each pixel in the region.
             A radius of 0 means no blur. The higher the radius, the denser the blur.
             Corresponds to {@link android.view.Window#setBackgroundBlurRadius}. -->
        <attr name="windowBackgroundBlurRadius" format="dimension" />
        <!-- 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}.
             @deprecated Overscan areas aren't set by any Android product anymore as of Android 11.
             -->
        <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. -->
        <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.
             @deprecated Swipe-to-dismiss isn't functional anymore.
             -->
        <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" />
        <!-- Magnifier style. -->
        <attr name="magnifierStyle" 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" />
        <!-- Drawable to use for the Undo action button in WebView selection action modes. -->
        <attr name="actionModeUndoDrawable" format="reference" />
        <!-- Drawable to use for the Redo action button in WebView selection action modes. -->
        <attr name="actionModeRedoDrawable" 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" />
        <!-- Corner radius of dialogs. -->
        <attr name="dialogCornerRadius" 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" />

        <!-- Corner radius of buttons. -->
        <attr name="buttonCornerRadius" format="dimension" />

        <!-- Corner radius of progress bars. -->
        <attr name="progressBarCornerRadius" format="dimension" />

        <!-- 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" />

        <!-- Light accent color used on Material NEXT buttons. @hide -->
        <attr name="colorAccentPrimary" format="color" />

        <!-- Secondary accent color used on Material NEXT buttons. @hide -->
        <attr name="colorAccentSecondary" format="color" />

        <!-- Tertiary accent color used on Material NEXT buttons. @hide -->
        <attr name="colorAccentTertiary" format="color" />

        <!-- Darker accent color used on Material NEXT buttons. @hide -->
        <attr name="colorAccentPrimaryVariant" format="color" />

        <!-- Text color used on top of Material NEXT accent colors. @hide -->
        <attr name="textColorOnAccent" format="color" />

        <!-- Secondary darker accent color used on Material NEXT buttons. @hide -->
        <attr name="colorAccentSecondaryVariant" format="color" />

        <!-- Tertiary darker accent color used on Material NEXT buttons. @hide -->
        <attr name="colorAccentTertiaryVariant" 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 framework progress and seek bar backgrounds in their normal state. -->
        <attr name="colorProgressBackgroundNormal" format="color" />

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

        <!-- The color applied to surfaces on top of colorBackground. @hide -->
        <attr name="colorSurface" format="color" />

        <!-- Alternative color applied to surfaces on top of colorBackground. @hide -->
        <attr name="colorSurfaceHighlight" format="color" />

        <!-- Alternative color applied to surfaces on top of colorBackground. @hide -->
        <attr name="colorSurfaceVariant" format="color" />

        <!-- Alternative color applied to surfaces on top of colorBackground. @hide -->
        <attr name="colorSurfaceHeader" format="color" />

        <!-- Color applied to effects. -->
        <attr name="effectColor" 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" />

        <!-- <p>Whether or not the force dark feature is allowed to be applied to this theme.
             <p>Setting this to false will disable the auto-dark feature on everything this
             theme is applied to along with anything drawn by any children of views using
             this theme.
             <p>Setting this to true will allow this view to be automatically made dark, however
             a value of 'true' will not override any 'false' value in its parent chain nor will
             it prevent any 'false' in any of its children. -->
        <attr name="forceDarkAllowed" format="boolean" />

        <!-- A lower-emphasized variant of the color on the fixed secondary branding color. @hide
             -->
        <attr name="materialColorOnSecondaryFixedVariant" format="color"/>
        <!-- A lower-emphasized variant of the color on the fixed tertiary branding color. @hide
             -->
        <attr name="materialColorOnTertiaryFixedVariant" format="color"/>
        <!-- The container color of surface the most lowered. @hide -->
        <attr name="materialColorSurfaceContainerLowest" format="color"/>
        <!-- A lower-emphasized variant of the color on the fixed primary branding color. @hide -->
        <attr name="materialColorOnPrimaryFixedVariant" format="color"/>
        <!-- A color that passes accessibility guidelines for text/iconography when drawn on top of
             the secondary container color. @hide -->
        <attr name="materialColorOnSecondaryContainer" format="color"/>
        <!-- A color that passes accessibility guidelines for text/iconography when drawn on top of
             the tertiary container color. @hide -->
        <attr name="materialColorOnTertiaryContainer" format="color"/>
        <!-- The container color of surface slightly lowered, which replaces the previous surface
             at elevation level 1. @hide -->
        <attr name="materialColorSurfaceContainerLow" format="color"/>
        <!-- A color that passes accessibility guidelines for text/iconography when drawn on top of
             the primary container color. @hide -->
        <attr name="materialColorOnPrimaryContainer" format="color"/>
        <!-- A stronger, more emphasized variant of the fixed secondary branding color. @hide -->
        <attr name="materialColorSecondaryFixedDim" format="color"/>
        <!-- A tonal variation of the on error color that passes accessibility guidelines for
             text/iconography when drawn on top of error container. @hide -->
        <attr name="materialColorOnErrorContainer" format="color"/>
        <!-- The color text/iconography when drawn on top of the fixed secondary branding color.
             @hide -->
        <attr name="materialColorOnSecondaryFixed" format="color"/>
        <!-- The "on surface" inverse color, useful for inverted backgrounds. @hide -->
        <attr name="materialColorOnSurfaceInverse" format="color"/>
        <!-- A stronger, more emphasized variant of the fixed tertiary branding color. @hide -->
        <attr name="materialColorTertiaryFixedDim" format="color"/>
        <!-- The color text/iconography when drawn on top of the fixed tertiary branding color.
             @hide -->
        <attr name="materialColorOnTertiaryFixed" format="color"/>
        <!-- A stronger, more emphasized variant of the fixed primary branding color. @hide -->
        <attr name="materialColorPrimaryFixedDim" format="color"/>
        <!-- A tonal variation of the secondary color suitable for background color of container
             views. @hide -->
        <attr name="materialColorSecondaryContainer" format="color"/>
        <!-- A tonal variation of the error color suitable for background color of container views.
             @hide -->
        <attr name="materialColorErrorContainer" format="color"/>
        <!-- The color text/iconography when drawn on top of the fixed primary branding color.
             @hide -->
        <attr name="materialColorOnPrimaryFixed" format="color"/>
        <!-- The inverse color of colorPrimary. @hide -->
        <attr name="materialColorPrimaryInverse" format="color"/>
        <!-- A secondary branding color for the app, which stays the same between light and dark
             themes. @hide -->
        <attr name="materialColorSecondaryFixed" format="color"/>
        <!-- The surface inverse color, useful for inverted backgrounds. @hide -->
        <attr name="materialColorSurfaceInverse" format="color"/>
        <!-- A tonal variation of the surface color. @hide -->
        <attr name="materialColorSurfaceVariant" format="color"/>
        <!-- A tonal variation of the tertiary color suitable for background color of container
             views. @hide -->
        <attr name="materialColorTertiaryContainer" format="color"/>
        <!-- A tertiary branding color for the app, which stays the same between light and dark
             themes. @hide -->
        <attr name="materialColorTertiaryFixed" format="color"/>
        <!-- A tonal variation of the primary color suitable for background color of container
             views. @hide -->
        <attr name="materialColorPrimaryContainer" format="color"/>
        <!-- A color that passes accessibility guidelines for text/iconography when drawn on top of
             background. @hide -->
        <attr name="materialColorOnBackground" format="color"/>
        <!-- A primary branding color for the app, which stays the same between light and dark
             themes. @hide -->
        <attr name="materialColorPrimaryFixed" format="color"/>
        <!-- A color that passes accessibility guidelines for text/iconography when drawn on top of
             secondary. @hide -->
        <attr name="materialColorOnSecondary" format="color"/>
        <!-- A color that passes accessibility guidelines for text/iconography when drawn on top of
             tertiary. @hide -->
        <attr name="materialColorOnTertiary" format="color"/>
        <!-- The surface color which always stay the dimmest in either dark or light theme. @hide
             -->
        <attr name="materialColorSurfaceDim" format="color"/>
        <!-- The surface color which always stay the brightest in either dark or light theme. @hide
             -->
        <attr name="materialColorSurfaceBright" format="color"/>
        <!-- The secondary branding color for the app, usually a bright complement to the primary
             branding color. @hide -->
        <attr name="materialColorSecondary" format="color"/>
        <!-- A color that passes accessibility guidelines for text/iconography when drawn on top of
             error. @hide -->
        <attr name="materialColorOnError" format="color"/>
        <!-- The color of surfaces such as cards, sheets, menus. @hide -->
        <attr name="materialColorSurface" format="color"/>
        <!-- The container color of surface slightly elevated, which replaces the previous surface
             at elevation level 3. @hide -->
        <attr name="materialColorSurfaceContainerHigh" format="color"/>
        <!-- The tertiary branding color for the app, usually a bright complement to the primary
             branding color. @hide -->
        <attr name="materialColorTertiary" format="color"/>
        <!-- The container color of surface the most elevated, which replaces the previous surface
             variant. @hide -->
        <attr name="materialColorSurfaceContainerHighest" format="color"/>
        <!-- A tonal variation of the on surface color that passes accessibility guidelines for
             text/iconography when drawn on top of surface variant. @hide -->
        <attr name="materialColorOnSurfaceVariant" format="color"/>
        <!-- A color meant to be used in element outlines. @hide -->
        <attr name="materialColorOutline" format="color"/>
        <!-- A color meant to be used in element outlines on the surface-variant color. @hide -->
        <attr name="materialColorOutlineVariant" format="color"/>
        <!-- A color that passes accessibility guidelines for text/iconography when drawn on top of
             primary. @hide -->
        <attr name="materialColorOnPrimary" format="color"/>
        <!-- A color that passes accessibility guidelines for text/iconography when drawn on top of
             surface. @hide -->
        <attr name="materialColorOnSurface" format="color"/>
        <!-- The container color of surface, which replaces the previous surface at elevation level
             2. @hide -->
        <attr name="materialColorSurfaceContainer" format="color"/>
        <!-- The container color of surface, which replaces the previous surface at elevation level
             2. @hide -->
        <attr name="materialColorSurfaceContainer" format="color"/>
         <!-- The primary branding color for the app. By default, this is the color applied to the
             action bar background. @hide -->
        <attr name="materialColorPrimary" format="color"/>
        <!-- The secondary branding color for the app, usually a bright complement to the primary
             branding color. @hide -->
        <attr name="materialColorSecondary" format="color"/>
        <!-- A color that passes accessibility guidelines for text/iconography when drawn on top
             of tertiary. @hide -->
        <attr name="materialColorTertiary" format="color"/>
    </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}.

             Note: If this flag is not set and the text field doesn't have max length limit, the
             framework automatically set maximum length of the characters to 5000 for the
             performance reasons.
             -->
        <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" />
        <!-- Can be combined with <var>text</var> and its variations to
             indicate that if there is extra information, the IME should provide
             {@link android.view.inputmethod.TextAttribute}.  Corresponds to
             {@link android.text.InputType#TYPE_TEXT_FLAG_ENABLE_TEXT_CONVERSION_SUGGESTIONS}. -->
        <flag name="textEnableTextConversionSuggestions" value="0x00100001" />
        <!-- 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_NAVIGATE_PREVIOUS}. -->
        <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 languages 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.
             Deprecated: see {@link android.text.util.Linkify#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" />
        <enum name="KEYCODE_REFRESH" value="285" />
        <enum name="KEYCODE_THUMBS_UP" value="286" />
        <enum name="KEYCODE_THUMBS_DOWN" value="287" />
        <enum name="KEYCODE_PROFILE_SWITCH" value="288" />
        <enum name="KEYCODE_VIDEO_APP_1" value="289" />
        <enum name="KEYCODE_VIDEO_APP_2" value="290" />
        <enum name="KEYCODE_VIDEO_APP_3" value="291" />
        <enum name="KEYCODE_VIDEO_APP_4" value="292" />
        <enum name="KEYCODE_VIDEO_APP_5" value="293" />
        <enum name="KEYCODE_VIDEO_APP_6" value="294" />
        <enum name="KEYCODE_VIDEO_APP_7" value="295" />
        <enum name="KEYCODE_VIDEO_APP_8" value="296" />
        <enum name="KEYCODE_FEATURED_APP_1" value="297" />
        <enum name="KEYCODE_FEATURED_APP_2" value="298" />
        <enum name="KEYCODE_FEATURED_APP_3" value="299" />
        <enum name="KEYCODE_FEATURED_APP_4" value="300" />
        <enum name="KEYCODE_DEMO_APP_1" value="301" />
        <enum name="KEYCODE_DEMO_APP_2" value="302" />
        <enum name="KEYCODE_DEMO_APP_3" value="303" />
        <enum name="KEYCODE_DEMO_APP_4" value="304" />
    </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="windowBackgroundBlurRadius" />
        <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="windowBlurBehindEnabled" />
        <attr name="windowBlurBehindRadius" />
        <attr name="windowActionBar" />
        <attr name="windowActionModeOverlay" />
        <attr name="windowActionBarOverlay" />
        <attr name="windowEnableSplitTouch" />
        <attr name="windowCloseOnTouchOutside" />
        <attr name="windowTranslucentStatus" />
        <attr name="windowTranslucentNavigation" />
        <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}.
             Corresponds to {@link android.view.Window#setNavigationBarDividerColor(int)}. -->
        <attr name="navigationBarDividerColor" format="color" />

        <!-- Sets whether the system should ensure that the status bar has enough
             contrast when a fully transparent background is requested.

             <p>If set to this value, the system will determine whether a scrim is necessary
             to ensure that the status bar has enough contrast with the contents of
             this app, and set an appropriate effective bar background color accordingly.

             <p>When the status bar color has a non-zero alpha value, the value of this
             attribute has no effect.

             <p>If the app does not target at least {@link android.os.Build.VERSION_CODES#Q Q},
             this attribute is ignored.

             @see android.view.Window#setStatusBarContrastEnforced -->
        <attr name="enforceStatusBarContrast" format="boolean" />

        <!-- Sets whether the system should ensure that the navigation bar has enough
             contrast when a fully transparent background is requested.

             <p>If set to this value, the system will determine whether a scrim is necessary
             to ensure that the navigation bar has enough contrast with the contents of
             this app, and set an appropriate effective bar background color accordingly.

             <p>When the navigation bar color has a non-zero alpha value, the value of this
             attribute has no effect.

             <p>If the app does not target at least {@link android.os.Build.VERSION_CODES#Q Q},
             this attribute is ignored.

             @see android.view.Window#setNavigationBarContrastEnforced -->
        <attr name="enforceNavigationBarContrast" format="boolean" />

        <!-- 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" />

        <!-- Flag indicating whether this window should skip movement animations.
             See also {@link android.view.WindowManager.LayoutParams#setCanPlayMoveAnimation} -->
        <attr name="windowNoMoveAnimation" format="boolean" />

        <!-- 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}.
             {@deprecated Use windowSplashscreenAnimatedIcon instead.}
             -->
        <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" />

        <!-- Controls how the window is laid out if there is a {@code DisplayCutout}.
        <p>
        Defaults to {@code default}.
        <p>
        See also
        {@link android.view.WindowManager.LayoutParams#layoutInDisplayCutoutMode
                WindowManager.LayoutParams.layoutInDisplayCutoutMode},
        {@link android.view.WindowManager.LayoutParams#LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT},
        {@link android.view.WindowManager.LayoutParams#LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES},
        {@link android.view.WindowManager.LayoutParams#LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER},
        and {@link android.view.DisplayCutout DisplayCutout}
        -->
        <attr name="windowLayoutInDisplayCutoutMode">
            <!-- <p>
            The window is allowed to extend into the <code>DisplayCutout</code> area, only if
            the <code>DisplayCutout</code> is fully contained within a system bar. Otherwise, the
            window is laid out such that it does not overlap with the <code>DisplayCutout</code>
            area.
            <p>
            Corresponds to <code>LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT</code>.
            -->
            <enum name="default" value="0" />
            <!-- <p>
            The window is always allowed to extend into the <code>DisplayCutout</code> areas on the
            short edges of the screen even if fullscreen or in landscape.
            The window will never extend into a <code>DisplayCutout</code> area on the long edges of
            the screen.
            <p>
            The window must make sure that no important content overlaps with the
            <code>DisplayCutout</code>.
            <p>
            Corresponds to <code>LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES</code>.
            -->
            <enum name="shortEdges" value="1" />
            <!-- <p>
            The window is never allowed to overlap with the <code>DisplayCutout</code> area.
            <p>
            This should be used with windows that transiently set
            <code>SYSTEM_UI_FLAG_FULLSCREEN</code> to avoid a relayout of the window when the
            flag is set or cleared.
            <p>
            Corresponds to <code>LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER</code>.
            -->
            <enum name="never" value="2" />
            <!-- <p>
            The window is always allowed to extend into the <code>DisplayCutout</code> areas on the
            all edges of the screen.
            <p>
            The window must make sure that no important content overlaps with the
            <code>DisplayCutout</code>.
            <p>
            Corresponds to <code>LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS</code>.
            -->
            <enum name="always" value="3" />
        </attr>

        <!-- The background color for the splash screen, if not specify then system will
             calculate from windowBackground. -->
        <attr name="windowSplashScreenBackground" format="color"/>

        <!-- Replace an icon in the center of the starting window, if the object is animated
             and drawable(e.g. AnimationDrawable, AnimatedVectorDrawable), then it will also
             play the animation while showing the starting window. -->
        <attr name="windowSplashScreenAnimatedIcon" format="reference"/>
        <!-- The duration, in milliseconds, of the window splash screen icon animation duration
             when playing the splash screen starting window. The maximum animation duration should
             be limited below 1000ms.
              @deprecated Not used by framework starting from API level 33. The system estimates the
               duration of the vector animation automatically. -->
        <attr name="windowSplashScreenAnimationDuration" format="integer"/>

        <!-- Place a drawable image in the bottom of the starting window. The image can be used to
             represent the branding of the application. -->
        <attr name="windowSplashScreenBrandingImage" format="reference"/>
        <!-- Set a background behind the splash screen icon. This is useful if there is not enough
             contrast between the window background and the icon. Note the shape would also be
             masking like an icon. -->
        <attr name="windowSplashScreenIconBackgroundColor" format="color"/>

        <!-- Specify whether this application always wants the icon to be displayed on the splash
             screen. -->
        <attr name="windowSplashScreenBehavior">
            <!-- The icon is shown when the launching activity sets the splashScreenStyle to
                 SPLASH_SCREEN_STYLE_ICON. If the launching activity does not specify any style,
                 follow the system behavior. -->
            <enum name="default" value="0" />
            <!-- The icon is shown unless the launching app specified SPLASH_SCREEN_STYLE_EMPTY -->
            <enum name="icon_preferred" value="1" />
        </attr>
    </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 closing a dream activity, this is the animation that is
              run on the dream activity (which is exiting the screen). -->
        <attr name="dreamActivityCloseExitAnimation" format="reference" />
        <!--  When opening a dream activity, this is the animation that is
              run on the dream activity (which is entering the screen). -->
        <attr name="dreamActivityOpenEnterAnimation" format="reference" />
        <!--  When opening a dream activity, this is the animation that is
              run on the old activity (which is exiting the screen). -->
        <attr name="dreamActivityOpenExitAnimation" 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 />

    <!-- Removed View attributes without a specified format (b/131100106) -->
    <attr name="__removed3" />
    <attr name="__removed4" />
    <attr name="__removed5" />
    <attr name="__removed6" />

    <!-- 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" />
        <attr name="__removed4" />
        <attr name="__removed5" />

        <!-- 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>

        <!-- Hints the Android System whether the view node associated with this View should be
             use for content capture purposes. -->
        <attr name="importantForContentCapture">
            <!-- Let the Android System use its heuristics to determine if the view is important for content capture. -->
            <flag name="auto" value="0" />
            <!-- Hint the Android System that this view is important for content capture,
                  and its children (if any) will be traversed.. -->
            <flag name="yes" value="0x1" />
            <!-- Hint the Android System that this view is *not* important for content capture,
                  but its children (if any) will be traversed.. -->
            <flag name="no" value="0x2" />
            <!-- Hint the Android System that this view is important for content capture,
                 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 content capture,
                 and its children (if any) will not be traversed. -->
            <flag name="noExcludeDescendants" value="0x8" />
        </attr>

        <!-- Boolean that hints the Android System that the view is credential and associated with
             CredentialManager -->
        <attr name="isCredential" format="boolean" />

        <!-- Hints the Android System whether the this View should be considered a scroll capture target. -->
        <attr name="scrollCaptureHint">
            <!-- Let the Android System  determine if the view can be a scroll capture target. -->
            <flag name="auto" value="0" />
            <!-- Hint the Android System that this view is a likely target. If capable, it will
                 be ranked above other views without this flag. -->
            <flag name="include" value="0x1" />
            <!-- Hint the Android System that this view should never be considered a scroll capture
                 target. -->
            <flag name="exclude" value="0x2" />
            <!-- Hint the Android System that this view's children should not be examined and should
                 be excluded as a scroll capture target. -->
            <flag name="excludeDescendants" value="0x4" />
        </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.
             Deprecated: The view drawing cache was largely made obsolete with the introduction of
             hardware-accelerated rendering in API 11. -->
        <attr name="drawingCacheQuality">
            <!-- Lets the framework decide what quality level should be used
                 for the drawing cache.
                 Deprecated: The view drawing cache was largely made obsolete with the introduction
                 of hardware-accelerated rendering in API 11. -->
            <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.
                 Deprecated: The view drawing cache was largely made obsolete with the introduction
                 of hardware-accelerated rendering in API 11. -->
            <enum name="low" value="1" />
            <!-- High quality. When set to high quality, the drawing cache uses a higher
                 color depth but uses more memory.
                 Deprecated: The view drawing cache was largely made obsolete with the introduction
                 of hardware-accelerated rendering in API 11. -->
            <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 that screen readers are requested to visit after this view.
             Requests that a screen-reader visits the content of this view before the content of the
             one it precedes. This does nothing if either view is not important for accessibility.
             {@see android.view.View#setAccessibilityTraversalBefore(int)} -->
        <attr name="accessibilityTraversalBefore" format="integer" />

        <!-- Sets the id of a view that screen readers are requested to visit before this view.
             Requests that a screen-reader visits the content of the other view before the content
             of this one. This does nothing if either view is not important for accessibility.
             {@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).
             {@deprecated View actually traverses the Context
             hierarchy looking for the relevant method, which is fragile (an intermediate
             ContextWrapper adding a same-named method would change behavior) and restricts
             bytecode optimizers such as R8. Instead, use View.setOnClickListener.}-->
        <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>

        <!-- Describes whether this view should allow interactions from AccessibilityServices only
             if the service sets the isAccessibilityTool property. -->
        <attr name="accessibilityDataSensitive" format="integer">
            <!-- The system determines whether the view's accessibility data is sensitive
                 - default (recommended). -->
            <enum name="auto" value="0" />
            <!-- Allow interactions from AccessibilityServices only if the service sets the
                 isAccessibilityTool property. -->
            <enum name="yes" value="1" />
            <!-- Allow interactions from all AccessibilityServices, regardless of their
                 isAccessibilityTool property. -->
            <enum name="no" value="2" />
        </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 information 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" />
            <!-- Pointer icon indicating handwriting. -->
            <enum name="handwriting" value="1022"/>
        </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" />

        <!-- Whether this view should be treated as a focusable unit by screen reader accessibility
             tools. See {@link android.view.View#setScreenReaderFocusable(boolean)}. The default
             value, {@code false}, leaves the screen reader to consider other signals, such as
             focusability or the presence of text, to decide what it focus.-->
        <attr name="screenReaderFocusable" format="boolean" />

        <!-- The title this view should present to accessibility as a pane title.
             See {@link android.view.View#setAccessibilityPaneTitle(CharSequence)} -->
        <attr name="accessibilityPaneTitle" format="string" />

        <!-- Whether or not this view is a heading for accessibility purposes. -->
        <attr name="accessibilityHeading" format="boolean"/>

        <!-- Whether or not allow clicks on disabled view. -->
        <attr name="allowClickWhenDisabled" format="boolean"/>

        <!-- Sets the color of the spot shadow that is drawn when the view has a positive Z or
             elevation value.
             <p>
             By default the shadow color is black. Generally, this color will be opaque so the
             intensity of the shadow is consistent between different views with different colors.
             <p>
             The opacity of the final spot shadow is a function of the shadow caster height, the
             alpha channel of the outlineSpotShadowColor (typically opaque), and the
             {@link android.R.attr#spotShadowAlpha} theme attribute. -->
        <attr name="outlineSpotShadowColor" format="color" />

        <!-- Sets the color of the ambient shadow that is drawn when the view has a positive Z
             or elevation value.
             <p>
             By default the shadow color is black. Generally, this color will be opaque so the
             intensity of the shadow is consistent between different views with different colors.
             <p>
             The opacity of the final ambient shadow is a function of the shadow caster height,
             the alpha channel of the outlineAmbientShadowColor (typically opaque), and the
             {@link android.R.attr#ambientShadowAlpha} theme attribute. -->
        <attr name="outlineAmbientShadowColor" format="color" />

        <!-- <p>Whether or not the force dark feature is allowed to be applied to this View.
             <p>Setting this to false will disable the auto-dark feature on this View draws
             including any descendants.
             <p>Setting this to true will allow this view to be automatically made dark, however
             a value of 'true' will not override any 'false' value in its parent chain nor will
             it prevent any 'false' in any of its children. -->
        <attr name="forceDarkAllowed" format="boolean" />

        <!-- <p>Whether the View's Outline should be used to clip the contents of the View.
             <p>Only a single non-rectangular clip can be applied on a View at any time. Circular
             clips from a
             {@link android.view.ViewAnimationUtils#createCircularReveal(View, int, int, float,
             float)} circular reveal animation take priority over Outline clipping, and child
             Outline clipping takes priority over Outline clipping done by a parent.
             <p>Note that this flag will only be respected if the View's Outline returns true from
             {@link android.graphics.Outline#canClip()}. -->
        <attr name="clipToOutline" format="boolean" />

        <!-- <p> Sets a preference to keep the bounds of this view clear from floating windows
            above this view's window. This informs the system that the view is considered a vital
            area for the user and that ideally it should not be covered. Setting this is only
            appropriate for UI where the user would likely take action to uncover it.
            <p>The system will try to respect this, but when not possible will ignore it.
            <p>This is equivalent to {@link android.view.View#setPreferKeepClear}.-->
        <attr name="preferKeepClear" format="boolean" />

        <!-- <p>Whether or not the auto handwriting initiation is enabled in this View.
             <p>For a view with an active {@link android.view.inputmethod.InputConnection},
             if auto handwriting initiation is enabled, stylus movement within its view boundary
             will automatically trigger the handwriting mode.
             See {@link android.view.View#setAutoHandwritingEnabled}.
             <p>The default value of this flag is configurable by the device manufacturer. -->
        <attr name="autoHandwritingEnabled" format="boolean" />

        <!-- <p>The amount of offset that is applied to the left edge of the view's stylus
             handwriting bounds, which by default is the view's visible bounds.

             <p>This attribute is mainly used to enlarge the view's handwriting bounds for better
             user experience. Note that a positive offset means the bounds is extended outwards,
             and vice versa. See {@link android.view.View#setHandwritingBoundsOffsets}

             <p> The default value is 10dp for {@link android.widget.TextView} and
             {@link android.widget.EditText}, and 0dp for other views. -->
        <attr name="handwritingBoundsOffsetLeft" format="dimension" />

        <!-- <p>The amount of offset that is applied to the top edge of the view's stylus
             handwriting bounds, which by default is the view's visible bounds.

             <p>This attribute is mainly used to enlarge the view's handwriting bounds for better
             user experience. Note that a positive offset means the bounds is extended outwards,
             and vice versa. See {@link android.view.View#setHandwritingBoundsOffsets}

             <p> The default value is 40dp for {@link android.widget.TextView} and
             {@link android.widget.EditText}, and 0dp for other views. -->
        <attr name="handwritingBoundsOffsetTop" format="dimension" />

        <!-- <p>The amount of offset that is applied to the right edge of the view's stylus
             handwriting bounds, which by default is the view's visible bounds.

             <p>This attribute is mainly used to enlarge the view's handwriting bounds for better
             user experience. Note that a positive offset means the bounds is extended outwards,
             and vice versa. See {@link android.view.View#setHandwritingBoundsOffsets}

             <p> The default value is 10dp for {@link android.widget.TextView} and
             {@link android.widget.EditText}, and 0dp for other views. -->
        <attr name="handwritingBoundsOffsetRight" format="dimension" />

        <!-- <p>The amount of offset that is applied to the bottom edge of the view's stylus
             handwriting bounds, which by default is the view's visible bounds.

             <p>This attribute is mainly used to enlarge the view's handwriting bounds for better
             user experience. Note that a positive offset means the bounds is extended outwards,
             and vice versa. See {@link android.view.View#setHandwritingBoundsOffsets}

             <p> The default value is 40dp for {@link android.widget.TextView} and
             {@link android.widget.EditText}, and 0dp for all other views. -->
        <attr name="handwritingBoundsOffsetBottom" format="dimension" />
    </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 if the cache is created
             over and over again. By default the persistence is set to scrolling.
             Deprecated: The view drawing cache was largely made obsolete with the introduction of
             hardware-accelerated rendering in API 11. -->
        <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.
             Deprecated: The view drawing cache was largely made obsolete with the introduction of
             hardware-accelerated rendering in API 11. -->
        <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 prior to HONEYCOMB), touch events will be dispatched to
             the child view where the first pointer went down until
             the last pointer goes up.
             If true (default for HONEYCOMB and later), 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" />
        <!-- Specifies if an IME can only be used while a device is in VR mode or on a dedicated
             device -->
        <attr name="isVrOnly" format="boolean"/>
        <!-- Specifies if an IME can only be used on a display created by a virtual device.
             @see android.companion.virtual.VirtualDeviceParams.Builder#setInputMethodComponent
             @hide @SystemApi -->
        <!-- @FlaggedApi("android.companion.virtual.flags.vdm_custom_ime") -->
        <attr name="isVirtualDeviceOnly" format="boolean"/>
        <attr name="__removed2" format="boolean" />
        <!-- Specifies whether the IME supports showing inline suggestions. -->
        <attr name="supportsInlineSuggestions" format="boolean" />
        <!-- Specifies whether the IME supports showing inline suggestions when touch
             exploration is enabled. This does nothing if supportsInlineSuggestions is false.
             The default value is false and most IMEs should not set this
             to true since the older menu-style Autofill works better with touch exploration.
             This attribute should be set to true in special situations, such as if this is an
             accessibility-focused IME which blocks user interaction with the app window while the
             IME is displayed. -->
        <attr name="supportsInlineSuggestionsWithTouchExploration" format="boolean" />
        <!-- Specifies whether the IME suppresses system spell checker.
             The default value is false. If an IME sets this attribute to true,
             the system spell checker will be disabled while the IME has an
             active input session. -->
        <attr name="suppressesSpellChecker" format="boolean" />
        <!-- Specifies whether the IME wants to be shown in the Input Method picker. Defaults to
             true. Set this to false if the IME is intended to be accessed programmatically.
             <p>
             Note: This functions as a hint to the system, which may choose to ignore this
             preference in certain situations or in future releases.-->
        <attr name="showInInputMethodPicker" format="boolean" />
        <!-- Specify one or more configuration changes that the IME will handle itself. If not
             specified, the IME will be restarted if any of these configuration changes happen in
              the system.  Otherwise, the IME will remain running and its
             {@link android.inputmethodservice.InputMethodService#onConfigurationChanged}
             method is called with the new configuration.
             <p>Note that all of these configuration changes can impact the
             resource values seen by the application, so you will generally need
             to re-retrieve all resources (including view layouts, drawables, etc)
             to correctly handle any configuration change.-->
        <attr name="configChanges" />
        <!-- Specifies whether the IME supports Handwriting using stylus. Defaults to false.
            When IME implements support for stylus handwriting, on every ACTION_DOWN with stylus
            on an editor,
            {@link android.inputmethodservice.InputMethodService#onStartStylusHandwriting()}
            is called.
            If IME is ready for stylus input, it must return {@code true} for Handwriting sessions
            to start. IME should attach it's View that renders Ink on screen to stylus handwriting
            inking window
            {@link android.inputmethodservice.InputMethodService#getStylusHandwritingWindow()}.
            IME will then receive Stylus MotionEvent(s) on DecorView i.e. the Inking view
            {@link android.view.View#onTouchEvent(MotionEvent)} attached by IME to Ink window.
            Handwriting mode can be finished by calling
            {@link android.inputmethodservice.InputMethodService#finishStylusHandwriting()} or will
            be finished by framework on next
            {@link android.inputmethodservice.InputMethodService#onFinishInput()}.
        -->
        <attr name="supportsStylusHandwriting" format="boolean" />
        <!-- Class name of an activity that allows the user to modify the stylus handwriting
            settings for this service -->
        <attr name="stylusHandwritingSettingsActivity" format="string" />

    </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 {@code 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.

             <p>Note: In order to avoid some known system issues on
             {@link android.os.Build.VERSION_CODES#P} and prior OSes, you may want to include
             {@code "AsciiCapable"} in
             {@link android.R.styleable#InputMethod_Subtype_imeSubtypeExtraValue} when you specify
             {@code true} to this attribute.-->
        <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" />
        <!-- The BCP-47 Language Tag of the preferred physical keyboard of the subtype. If it's not
             specified, {@link android.R.styleable#InputMethod_Subtype_languageTag} will be used.
             See also
             {@link android.view.inputmethod.InputMethodSubtype#getPhysicalKeyboardHintLanguageTag}.
             -->
        <attr name="physicalKeyboardHintLanguageTag" format="string" />
        <!-- The layout type of the preferred physical keyboard of the subtype.
             It matches the layout type string in the keyboard layout definition. See also
             {@link android.view.inputmethod.InputMethodSubtype#getPhysicalKeyboardHintLayoutType}.
             -->
        <attr name="physicalKeyboardHintLayoutType" 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" />
        <!-- A recommended timeout in milliseconds used in
             {@link android.view.accessibility.AccessibilityManager#getRecommendedTimeoutMillis(int, int)
             android.view.accessibility.AccessibilityManager.getRecommendedTimeoutMillis(int, int)}
             to return a suitable value for UIs that do not include interactive controls.
             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="nonInteractiveUiTimeout" format="integer" />
        <!-- A recommended timeout in milliseconds used in
             {@link android.view.accessibility.AccessibilityManager#getRecommendedTimeoutMillis(int, int)
             android.view.accessibility.AccessibilityManager.getRecommendedTimeoutMillis(int, int)}
             to return a suitable value for interactive controls.
             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="interactiveUiTimeout" 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" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK}. -->
            <flag name="flagRequestShortcutWarningDialogSpokenFeedback" value="0x00000400" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_SERVICE_HANDLES_DOUBLE_TAP}. -->
            <flag name="flagServiceHandlesDoubleTap" value="0x00000800" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_MULTI_FINGER_GESTURES}. -->
            <flag name="flagRequestMultiFingerGestures" value="0x00001000" />
            <flag name="flagSendMotionEvents" value="0x0004000" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_INPUT_METHOD_EDITOR}. -->
            <flag name="flagInputMethodEditor" value="0x0008000" />
        </attr>
        <!-- Fully qualified class 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" />
        <!-- Fully qualified class name of {@link android.service.quicksettings.TileService} is
             associated with this accessibility service for one to one mapping. It is used by system
             settings to remind users this accessibility service has a
             {@link android.service.quicksettings.TileService}. -->
        <attr name="tileService" format="string" />
        <!-- Attribute whether the accessibility service wants to be able to retrieve the
             active window content. This setting cannot be changed at runtime.
             <p>
             Required to allow setting the {@link android.accessibilityservice
             #AccessibilityServiceInfo#FLAG_RETRIEVE_INTERACTIVE_WINDOWS} flag.
             </p>
         -->
        <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" />
        <!-- Attribute whether the accessibility service wants to be able to take screenshot. -->
        <attr name="canTakeScreenshot" format="boolean" />

        <!-- Attribute indicating whether the accessibility service is used to assist users with
             disabilities. This criteria might be defined by the installer. The default is false.
             <p>
             Note: If this flag is false, system will show a notification after a duration to
             inform the user about the privacy implications of the service.
             </p>
        -->
        <attr name="isAccessibilityTool" format="boolean" />

        <!-- Animated image of the accessibility service purpose or behavior, to help users
             understand how the service can help them. -->
        <attr name="animatedImageDrawable" format="reference"/>
        <!-- Html description of the accessibility service usage, availability, or limitations (e.g.
             isn't supported by all apps). -->
        <attr name="htmlDescription" format="reference"/>
        <!-- Description of the accessibility service usage, availability, or limitations (e.g.
             isn't supported by all apps). -->
        <attr name="description" />
        <!-- Brief summary of the accessibility service purpose or behavior. -->
        <attr name="summary" />
        <!-- Detailed intro of the accessibility service purpose or behavior. -->
        <attr name="intro" format="reference" />
    </declare-styleable>

    <!-- Use <code>accessibility-shortcut-target</code> as the root tag of the XML resource that
         describes an activity, which is referenced from the
         <code>android.accessibilityshortcut.target</code> meta-data entry. -->
    <declare-styleable name="AccessibilityShortcutTarget">
        <!-- Description of the target of accessibility shortcut usage, availability, or limitations
             (e.g. isn't supported by all apps). -->
        <attr name="description" />
        <!-- Brief summary of the target of accessibility shortcut purpose or behavior. -->
        <attr name="summary" />
        <!-- Animated image of the target of accessibility shortcut purpose or behavior, to help
             users understand how the target of accessibility shortcut can help them.-->
        <attr name="animatedImageDrawable" format="reference"/>
        <!-- Html description of the target of accessibility shortcut usage, availability, or
             limitations (e.g. isn't supported by all apps). -->
        <attr name="htmlDescription" format="reference"/>
        <!-- Fully qualified class name of an activity that allows the user to modify the settings
             for this target of accessibility shortcut. -->
        <attr name="settingsActivity" />
        <!-- Fully qualified class name of {@link android.service.quicksettings.TileService} is
             associated with this accessibility shortcut target for one to one mapping. It is used
             by system settings to remind users this accessibility service has a
             {@link android.service.quicksettings.TileService}. -->
        <attr name="tileService" format="string" />
        <!-- Detailed intro of the target of accessibility shortcut purpose or behavior. -->
        <attr name="intro" format="reference" />
    </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"/>
        <!-- Whether the device must be screen on before routing data to this service.
             The default is true.-->
        <attr name="requireDeviceScreenOn" format="boolean"/>
        <!-- Whether the device should default to observe mode when this service is
             default or in the foreground. -->
        <attr name="defaultToObserveMode" format="boolean"/>
    </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"/>
        <!-- Secure Element which the AIDs should be routed to -->
        <attr name="secureElementName" format="string"/>
        <!-- Whether the device must be unlocked before routing data to this service.
             The default is false.-->
        <attr name="requireDeviceUnlock"/>
        <!-- Whether the device must be screen on before routing data to this service.
             The default is false.-->
        <attr name="requireDeviceScreenOn"/>
        <!-- Whether the device should default to observe mode when this service is
             default or in the foreground. -->
        <attr name="defaultToObserveMode"/>
    </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"/>
        <attr name="hand_second" format="reference"/>
        <!-- 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"/>
        <!-- Tint to apply to the dial graphic. -->
        <attr name="dialTint" format="color" />
        <!-- Blending mode used to apply the dial graphic tint. -->
        <attr name="dialTintMode">
            <!-- 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 hour hand graphic. -->
        <attr name="hand_hourTint" format="color" />
        <!-- Blending mode used to apply the hour hand graphic tint. -->
        <attr name="hand_hourTintMode">
            <!-- 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 minute hand graphic. -->
        <attr name="hand_minuteTint" format="color" />
        <!-- Blending mode used to apply the minute hand graphic tint. -->
        <attr name="hand_minuteTintMode">
            <!-- 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 second hand graphic. -->
        <attr name="hand_secondTint" format="color" />
        <!-- Blending mode used to apply the second hand graphic tint. -->
        <attr name="hand_secondTintMode">
            <!-- 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="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">
        <!-- Enables styling shortcuts, e.g. Ctrl+B for bold. This is off by default.  -->
        <attr name="enableTextStylingShortcuts" format="boolean" />
    </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 maximum number of rows to create when automatically positioning children. -->
        <attr name="rowCount" format="integer" />
        <!-- The maximum 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. One that implements Animatable offers more
             control over the animation.-->
        <attr name="indeterminateDrawable" format="reference" />
        <!-- Drawable used for the progress mode. -->
        <attr name="progressDrawable" format="reference" />
        <!-- Duration of the indeterminate animation. Only affects the indeterminate animation
             if the indeterminate Drawable does not implement
             android.graphics.drawable.Animatable. -->
        <attr name="indeterminateDuration" format="integer" min="1" />
        <!-- Defines how the indeterminate mode should behave when the progress reaches max. Only
             affects the indeterminate animation if the indeterminate Drawable does not implement
             android.graphics.drawable.Animatable. -->
        <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" />
        <!-- Sets the acceleration curve for the indeterminate animation. Defaults to a linear
             interpolation. Only affects the indeterminate animation if the indeterminate Drawable
             does not implement android.graphics.drawable.Animatable.-->
        <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 (normal, bold, italic, bold|italic) for the text. -->
        <attr name="textStyle" />
        <!-- Weight for the font used in the TextView. -->
        <attr name="textFontWeight" />
        <!-- Typeface (normal, sans, serif, monospace) for the text. -->
        <attr name="typeface" />
        <!-- Font family (named by string or as a font resource reference) for the text. -->
        <attr name="fontFamily" />
        <!-- Specifies the {@link android.os.LocaleList} for the text.
             May be a string value, which is a comma-separated language tag list, such as "ja-JP,zh-CN".
             When not specified or an empty string is given, it will fallback to the default one.
             {@see android.os.LocaleList#forLanguageTags(String)} -->
        <attr name="textLocale" format="string" />
        <!-- Color of the text selection highlight. -->
        <attr name="textColorHighlight" />
        <!-- Color of search results highlight.
             This color is typically used when TextView/EditText shows search result in-app text
             search invoked with Ctrl+F. -->
        <attr name="searchResultHighlightColor" format="color" />
        <!-- Color of focused search result highlight.
             This color is typically used when TextView/EditText shows search result in-app text
             search invoked with Ctrl+F. -->
        <attr name="focusedSearchResultHighlightColor" format="color" />

        <!-- 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" />
        <!-- Whether to respect the ascent and descent of the fallback fonts that are used in
        displaying the text. When true, fallback fonts that end up getting used can increase
        the ascent and descent of the lines that they are used on. -->
        <attr name="fallbackLineSpacing" format="boolean"/>
        <!-- Text letter-spacing. -->
        <attr name="letterSpacing" format="float" />
        <!-- Font feature settings. -->
        <attr name="fontFeatureSettings" format="string" />
        <!-- Font variation settings. -->
        <attr name="fontVariationSettings" format="string"/>
        <!-- Specifies the strictness of line-breaking rules applied within an element. -->
        <attr name="lineBreakStyle" />
        <!-- Specifies the phrase-based breaking opportunities. -->
        <attr name="lineBreakWordStyle" />
    </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 search results highlight.
             This color is typically used when TextView/EditText shows search result in-app text
             search invoked with Ctrl+F. -->
        <attr name="searchResultHighlightColor" format="color" />
        <!-- Color of focused search result highlight.
             This color is typically used when TextView/EditText shows search result in-app text
             search invoked with Ctrl+F. -->
        <attr name="focusedSearchResultHighlightColor" format="color" />
        <!-- 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 (normal, bold, italic, bold|italic) for the text. -->
        <attr name="textStyle" />
        <!-- Weight for the font used in the TextView. -->
        <attr name="textFontWeight" format="integer"/>
        <!-- Font family (named by string or as a font resource reference) for the text. -->
        <attr name="fontFamily" />
        <!-- Specifies the {@link android.os.LocaleList} for the text in this TextView.
             If not given, the system default will be used.
             May be a string value, which is a comma-separated language tag list, such as "ja-JP,zh-CN".
             When not specified or an empty string is given, it will fallback to the default one.
             {@see android.os.LocaleList#forLanguageTags(String)}
             {@see android.widget.TextView#setTextLocales(android.os.LocaleList)} -->
        <attr name="textLocale" format="string" />
        <!-- 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. The value will not be applied for the last
             line of text. -->
        <attr name="lineSpacingExtra" format="dimension" />
        <!-- Extra spacing between lines of text, as a multiplier. The value will not be applied
             for the last line of text.-->
        <attr name="lineSpacingMultiplier" format="float" />
        <!-- Explicit height between lines of text. If set, this will override the values set
             for lineSpacingExtra and lineSpacingMultiplier. -->
        <attr name="lineHeight" format="dimension" />
        <!-- Distance from the top of the TextView to the first text baseline. If set, this
             overrides the value set for paddingTop. -->
        <attr name="firstBaselineToTopHeight" format="dimension" />
        <!-- Distance from the bottom of the TextView to the last text baseline. If set, this
             overrides the value set for paddingBottom. -->
        <attr name="lastBaselineToBottomHeight" format="dimension" />
        <!-- 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" />
        <!-- Whether to respect the ascent and descent of the fallback fonts that are used in
        displaying the text. When true, fallback fonts that end up getting used can increase
        the ascent and descent of the lines that they are used on. -->
        <attr name="fallbackLineSpacing" format="boolean"/>
        <!-- Text letter-spacing. -->
        <attr name="letterSpacing" />
        <!-- Font feature settings. -->
        <attr name="fontFeatureSettings" />
        <!-- Font variation settings. -->
        <attr name="fontVariationSettings" />
        <!-- 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" />

            <!-- Same to hyphenationFrequency="normal" but using faster algorithm for measuring
            hyphenation break points. To make text rendering faster with hyphenation, this algorithm
             ignores some hyphen character related typographic features, e.g. kerning. -->
            <enum name="normalFast" value="3" />

            <!-- Same to hyphenationFrequency="full" but using faster algorithm for measuring
            hyphenation break points. To make text rendering faster with hyphenation, this algorithm
             ignores some hyphen character related typographic features, e.g. kerning. -->
            <enum name="fullFast" value="4" />
        </attr>
        <!-- Specifies the line-break strategies for text wrapping. -->
        <attr name="lineBreakStyle">
            <!-- No line-break rules are used for line breaking. -->
            <enum name="none" value="0" />
            <!-- The least restrictive line-break rules are used for line breaking. -->
            <enum name="loose" value="1" />
            <!-- The most common line-break rules are used for line breaking. -->
            <enum name="normal" value="2" />
            <!-- The most strict line-break rules are used for line breaking. -->
            <enum name="strict" value="3" />
        </attr>
        <!-- Specifies the line-break word strategies for text wrapping.-->
        <attr name="lineBreakWordStyle">
            <!-- No line-break word style is used for line breaking. -->
            <enum name="none" value="0" />
            <!-- Line breaking is based on phrases, which results in text wrapping only on meaningful words. -->
            <enum name="phrase" value="1" />
        </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" />
        <!-- 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" />
        <!-- Perceptual luminance applied to the base color. From 0 to 100. -->
        <attr name="lStar" format="float" />
    </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. -->
        <attr name="opticalInsetLeft" />
        <!-- Top optical inset. -->
        <attr name="opticalInsetTop" />
        <!-- Right optical inset. -->
        <attr name="opticalInsetRight" />
        <!-- Bottom optical inset. -->
        <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 animated images (gif). -->
    <declare-styleable name="AnimatedImageDrawable">
        <!-- Identifier of the image file. This attribute is mandatory.
             It must be an image file with multiple frames, e.g. gif or webp -->
        <attr name="src" />
        <!-- Indicates if the drawable needs to be mirrored when its layout direction is
             RTL (right-to-left). -->
        <attr name="autoMirrored" />
        <!-- Replace the loop count in the encoded data. A repeat count of 0 means that
             the animation will play once, regardless of the number of times specified
             in the encoded data. Setting this to infinite (-1) will result in the
             animation repeating as long as it is displayed (once start() is called). -->
        <attr name="repeatCount"/>
        <!-- When true, automatically start animating. The default is false, meaning
             that the animation will not start until start() is called. -->
        <attr name="autoStart" />
    </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 appearance. 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" />
        <!-- Secondary color of the ripple effect. -->
        <attr name="effectColor" />
    </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. -->
        <attr name="opticalInsetLeft" format="dimension" />
        <!-- Top optical inset. -->
        <attr name="opticalInsetTop" format="dimension" />
        <!-- Right optical inset. -->
        <attr name="opticalInsetRight" format="dimension" />
        <!-- Bottom optical inset. -->
        <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" />
        <!-- Special option for window animations: show the wallpaper behind when running this
             animation. -->
        <attr name="showWallpaper" format="boolean" />
        <!-- Special option for window animations: whether window should have rounded corners.
             @see ScreenDecorationsUtils#getWindowCornerRadius(Resources) -->
        <attr name="hasRoundedCorners" format="boolean" />
        <!-- Special option for window animations: whether to show a background behind the animating
             windows. By default the window's background is used unless overridden by the
             animation. -->
        <attr name="showBackdrop" format="boolean" />
        <!-- Special option for window animations: whether the window's background should be used as
             a background to the animation. -->
        <attr name="backdropColor" format="color" />
    </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|dimension" />
        <attr name="toXDelta" format="float|fraction|dimension" />
        <attr name="fromYDelta" format="float|fraction|dimension" />
        <attr name="toYDelta" format="float|fraction|dimension" />
    </declare-styleable>

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

    <declare-styleable name="ClipRectAnimation">
        <attr name="fromLeft" format="fraction" />
        <attr name="fromTop" format="fraction" />
        <attr name="fromRight" format="fraction" />
        <attr name="fromBottom" format="fraction" />
        <attr name="toLeft" format="fraction" />
        <attr name="toTop" format="fraction" />
        <attr name="toRight" format="fraction" />
        <attr name="toBottom" format="fraction" />
    </declare-styleable>

    <!-- Defines the ExtendAnimation used to extend windows during animations -->
    <declare-styleable name="ExtendAnimation">
        <!-- Defines the amount a window should be extended outward from the left at the start of
             the animation in an absolute dimension (interpreted as pixels if no dimension unit is
             provided) or as a percentage of the animation target's width. -->
        <attr name="fromExtendLeft" format="float|fraction|dimension" />
        <!-- Defines the amount a window should be extended outward from the top at the start of
             the animation in an absolute dimension (interpreted as pixels if no dimension unit is
             provided) or as a percentage of the animation target's height. -->
        <attr name="fromExtendTop" format="float|fraction|dimension" />
        <!-- Defines the amount a window should be extended outward from the right at the start of
             the animation in an absolute dimension (interpreted as pixels if no dimension unit is
             provided) or as a percentage of the animation target's width. -->
        <attr name="fromExtendRight" format="float|fraction|dimension" />
        <!-- Defines the amount a window should be extended outward from the bottom at the start of
             the animation in an absolute dimension (interpreted as pixels if no dimension unit is
             provided) or as a percentage of the animation target's height. -->
        <attr name="fromExtendBottom" format="float|fraction|dimension" />
        <!-- Defines the amount a window should be extended outward from the left by the end of the
             animation by transitioning from the fromExtendLeft amount in an absolute dimension
             (interpreted as pixels if no dimension unit is provided) or as a percentage of the
             animation target's width. -->
        <attr name="toExtendLeft" format="float|fraction|dimension" />
        <!-- Defines the amount a window should be extended outward from the top by the end of the
             animation by transitioning from the fromExtendTop amount in an absolute dimension
             (interpreted as pixels if no dimension unit is provided) or as a percentage of the
             animation target's height. -->
        <attr name="toExtendTop" format="float|fraction|dimension" />
        <!-- Defines the amount a window should be extended outward from the right by the end of
             the animation by transitioning from the fromExtendRight amount in an absolute
             dimension (interpreted as pixels if no dimension unit is provided) or as a percentage
             of the animation target's width. -->
        <attr name="toExtendRight" format="float|fraction|dimension" />
        <!-- Defines the amount a window should be extended outward from the bottom by the end of
             the animation by transitioning from the fromExtendBottom amount in an absolute
             dimension (interpreted as pixels if no dimension unit is provided) or as a percentage
             of the animation target's height. -->
        <attr name="toExtendBottom" format="float|fraction|dimension" />
    </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.
             {@deprecated Menu actually traverses the Context hierarchy looking for the
             relevant method, which is fragile (an intermediate ContextWrapper adding a
             same-named method would change behavior) and restricts bytecode optimizers
             such as R8. Instead, use MenuItem.setOnMenuItemClickListener.} -->
        <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>

    <!-- {@deprecated Copy this definition into your own application project.} -->
    <declare-styleable name="KeyboardView">
        <!-- Default KeyboardView style.
             {@deprecated Copy this definition into your own application project.} -->
        <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.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyBackground" format="reference" />

        <!-- Size of the text for character keys.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyTextSize" format="dimension" />

        <!-- Size of the text for custom keys with some text and no icon.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="labelTextSize" format="dimension" />

        <!-- Color to use for the label in a key.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyTextColor" format="color" />

        <!-- Layout resource for key press feedback.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyPreviewLayout" format="reference" />

        <!-- Vertical offset of the key press feedback from the key.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyPreviewOffset" format="dimension" />

        <!-- Height of the key press feedback popup.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyPreviewHeight" format="dimension" />

        <!-- Amount to offset the touch Y coordinate by, for bias correction.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="verticalCorrection" format="dimension" />

        <!-- Layout resource for popup keyboards.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="popupLayout" format="reference" />

        <!-- {@deprecated Copy this definition into your own application project.} -->
        <attr name="shadowColor" />
        <!-- {@deprecated Copy this definition into your own application project.} -->
        <attr name="shadowRadius" />
    </declare-styleable>

    <!-- {@deprecated Copy this definition into your own application project.} -->
    <declare-styleable name="KeyboardViewPreviewState">
        <!-- State for {@link android.inputmethodservice.KeyboardView KeyboardView}
                key preview background.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="state_long_pressable" format="boolean" />
    </declare-styleable>

    <!-- {@deprecated Copy this definition into your own application project.} -->
    <declare-styleable name="Keyboard">
        <!-- Default width of a key, in pixels or percentage of display width.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyWidth" format="dimension|fraction" />
        <!-- Default height of a key, in pixels or percentage of display width.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyHeight" format="dimension|fraction" />
        <!-- Default horizontal gap between keys.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="horizontalGap" format="dimension|fraction" />
        <!-- Default vertical gap between rows of keys.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="verticalGap" format="dimension|fraction" />
    </declare-styleable>

    <!-- {@deprecated Copy this definition into your own application project.} -->
    <declare-styleable name="Keyboard_Row">
        <!-- Row edge flags.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="rowEdgeFlags">
            <!-- Row is anchored to the top of the keyboard.
             {@deprecated Copy this definition into your own application project.} -->
            <flag name="top" value="4" />
            <!-- Row is anchored to the bottom of the keyboard.
             {@deprecated Copy this definition into your own application project.} -->
            <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.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyboardMode" format="reference" />
    </declare-styleable>

    <!-- {@deprecated Copy this definition into your own application project.} -->
    <declare-styleable name="Keyboard_Key">
        <!-- The unicode value or comma-separated values that this key outputs.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="codes" format="integer|string" />
        <!-- The XML keyboard layout of any popup keyboard.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="popupKeyboard" format="reference" />
        <!-- The characters to display in the popup keyboard.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="popupCharacters" format="string" />
        <!-- Key edge flags.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyEdgeFlags">
            <!-- Key is anchored to the left of the keyboard.
                 {@deprecated Copy this definition into your own application project.} -->
            <flag name="left" value="1" />
            <!-- Key is anchored to the right of the keyboard.
                 {@deprecated Copy this definition into your own application project.} -->
            <flag name="right" value="2" />
        </attr>
        <!-- Whether this is a modifier key such as Alt or Shift.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="isModifier" format="boolean" />
        <!-- Whether this is a toggle key.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="isSticky" format="boolean" />
        <!-- Whether long-pressing on this key will make it repeat.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="isRepeatable" format="boolean" />
        <!-- The icon to show in the popup preview.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="iconPreview" format="reference" />
        <!-- The string of characters to output when this key is pressed.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyOutputText" format="string" />
        <!-- The label to display on the key.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyLabel" format="string" />
        <!-- The icon to display on the key instead of the label.
             {@deprecated Copy this definition into your own application project.} -->
        <attr name="keyIcon" format="reference" />
        <!-- Mode of the keyboard. If the mode doesn't match the
             requested keyboard mode, the key will be skipped.
             {@deprecated Copy this definition into your own application project.} -->
        <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"/>
        <!-- Maximum width that the AppWidget can be resized to. -->
        <attr name="maxResizeWidth" format="dimension"/>
        <!-- Maximum height that the AppWidget can be resized to. -->
        <attr name="maxResizeHeight" format="dimension"/>
        <!-- Default width of the AppWidget in units of launcher grid cells. -->
        <attr name="targetCellWidth" format="integer"/>
        <!-- Default height of the AppWidget in units of launcher grid cells. -->
        <attr name="targetCellHeight" format="integer"/>
        <!-- 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, in a drawable resource id, 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 layout resource id of a preview of what the AppWidget will look like after it's
             configured.
             Unlike previewImage, previewLayout can better showcase AppWidget in different locales,
             system themes, display sizes & density etc.
             If supplied, this will take precedence over the previewImage on supported widget hosts.
             Otherwise, previewImage will be used. -->
        <attr name="previewLayout" 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>
        <!-- Flags indicating various features supported by the widget. These are hints to the
         widget host, and do not actually change the behavior of the widget. -->
        <attr name="widgetFeatures" format="integer">
            <!-- The widget can be reconfigured anytime after it is bound -->
            <flag name="reconfigurable" value="0x1" />
            <!-- The widget is added directly by the app, and does not need to appear in
                 the global list of available widgets -->
            <flag name="hide_from_picker" value="0x2" />
              <!-- The widget provides a default configuration. The host may decide not to launch
                   the provided configuration activity. -->
           <flag name="configuration_optional" value="0x4" />
        </attr>
        <!-- A resource identifier for a string containing a short description of the widget. -->
        <attr name="description" />
    </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" />

        <!-- Wallpapers optimized and capable of drawing in ambient mode will return true.
             This feature requires the android.permission.AMBIENT_WALLPAPER permission.
             @hide @SystemApi -->
        <attr name="supportsAmbientMode" format="boolean" />

        <!-- Indicates that this wallpaper service should receive zoom transition updates when
             changing the structural state of the device (e.g. when folding or unfolding
             a foldable device). When this value is set to true
             {@link android.service.wallpaper.WallpaperService.Engine} could receive zoom updates
             before or after changing the device state. Wallpapers receive zoom updates using
             {@link android.service.wallpaper.WallpaperService.Engine#onZoomChanged(float)} and
             zoom rendering should be handled manually. Zoom updates are delivered only when
             {@link android.service.wallpaper.WallpaperService.Engine} is created and not destroyed.
             Default value is true.
             Corresponds to
             {@link android.app.WallpaperInfo#shouldUseDefaultUnfoldTransition()} -->
        <attr name="shouldUseDefaultUnfoldTransition" format="boolean" />

        <!-- Uri that specifies a settings Slice for this wallpaper. -->
        <attr name="settingsSliceUri" format="string"/>

        <!-- Indicates that this wallpaper service can support multiple engines to render on each
             surface independently. An example use case is a multi-display set-up where the
             wallpaper service can render surfaces to each of the connected displays. Corresponds to
             {@link android.app.WallpaperInfo#supportsMultipleDisplays()} -->
        <attr name="supportsMultipleDisplays" 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" />
        <!-- A preview, in a drawable resource id, of what the Dream will look like. -->
        <attr name="previewImage" format="reference" />
        <!-- Whether to show clock and other complications such as weather in the overlay. Default
             to true. Note that the overlay on dreams is currently only supported on tablets. -->
        <attr name="showClockAndComplications" format="boolean" />
    </declare-styleable>

    <!--  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">
        <!--  Component name of an activity that allows the user to modify
             the settings for this trust agent. @hide -->
        <attr name="settingsActivity" />
        <!--  Title for a preference that allows that user to launch the
             activity to modify trust agent settings. @hide -->
        <attr name="title" />
        <!--  Summary for the same preference as the title. @hide -->
        <attr name="summary" />
        <!--  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.AutofillService#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" />
        <!-- Fully qualified class name of an activity that allows the user to view any passwords
             saved by this service. -->
        <attr name="passwordsActivity" format="string" />

        <!-- Specifies whether the AutofillService supports inline suggestions-->
        <attr name="supportsInlineSuggestions" format="boolean" />
    </declare-styleable>

    <!-- Use <code>compatibility-package</code> as a child tag of <code>autofill-service</code>
         in the XML resource that describes an {@link android.service.autofill.AutofillService}
         to specify a package and an optional max version code for which to request compatibility
         mode. If no max version code is specified compatibility mode is requested for all package
         versions. The max version code is useful to avoid requesting compatibility mode for newer
         package versions that are known to natively support autofill.
    -->
    <declare-styleable name="AutofillService_CompatibilityPackage">
        <!-- The package name for which compatibility mode is requested. -->
        <attr name="name" />
        <!-- The max version code of the package for which compatibility mode is
             requested. This corresponds to the long value returned by {@link
             android.content.pm.PackageInfo#getLongVersionCode()} for the target package.
        -->
        <attr name="maxLongVersionCode" format="string" />
    </declare-styleable>

    <!-- =============================== -->
    <!-- System Speech Recognition attributes -->
    <!-- =============================== -->
    <eat-comment />

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

    <!-- =============================== -->
    <!-- Content Capture attributes -->
    <!-- =============================== -->
    <eat-comment />

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

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

    <!-- Use <code>translation-service</code> as the root tag of the XML resource that describes
         a {@link android.service.translation.TranslationService}, which is referenced from
         its {@link android.service.translation.TranslationService#SERVICE_META_DATA} meta-data
         entry.
         @hide @SystemApi
    -->
    <declare-styleable name="TranslationService">
        <!-- 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"/>
        <!-- The user restriction for this preference. -->
        <attr name="userRestriction" format="string"/>
    </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"/>
        <!-- The dot color -->
        <attr name="dotColor" format="color|reference"/>
        <!-- Color of the dot when it's activated -->
        <attr name="dotActivatedColor" format="color|reference"/>
        <!-- Keep dot in activated state until segment completion -->
        <attr name="keepDotActivated" format="boolean"/>
        <!-- Enlarge vertex entry area for some form factors -->
        <attr name="enlargeVertexEntryArea" format="boolean"/>
    </declare-styleable>

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

    <!-- Use <code>quickaccesswallet-service</code> as the root tag of the XML resource
         that describes a {@link android.service.quickaccesswallet.QuickAccessWalletService},
         which is referenced from its
         {@link android.service.quickaccesswallet.QuickAccessWalletService#SERVICE_META_DATA}
         meta-data entry.
    -->
    <declare-styleable name="QuickAccessWalletService">
        <!-- Fully qualified class name of an activity that allows the user to modify
             the settings for this service. -->
        <attr name="settingsActivity" format="string"/>
        <!-- Fully qualified class name of an activity that allows the user to view
             their entire wallet -->
        <attr name="targetActivity" format="string"/>
        <!-- Text shown on the empty state button if no cards are provided -->
        <attr name="shortcutLongLabel"/>
        <!-- Text shown on the button that takes users to the wallet application -->
        <attr name="shortcutShortLabel"/>
    </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" />
        <!-- Flag indicating whether a recognition service can be selected as default. The default
             value of this flag is true. -->
        <attr name="selectableAsDefault" format="boolean" />
    </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. On Android 11 and
             earlier, this must be a valid RecognitionService.
             <p>
             From Android 12 onward, this attribute does nothing. However, we still require it to
             be set to something to reduce the risk that an app with an unspecified value gets
             pushed to older platform versions, where it will cause a boot loop. To make sure
             developers don't miss it, the system will reset the current assistant if this isn't
             specified.-->
        <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" />
        <!-- The service that provides {@link android.service.voice.HotwordDetectionService}.
             Expect a component name to be provided. @hide @SystemApi -->
        <attr name="hotwordDetectionService" format="string" />
        <!-- The service that provides {@link android.service.voice.VisualQueryDetectionService}.
             Expect a component name to be provided. @hide @SystemApi -->
        <attr name="visualQueryDetectionService" format="string" />

    </declare-styleable>

    <!-- Use <code>game-service</code> as the root tag of the XML resource that
         describes a GameService.
         Described here are the attributes that can be included in that tag. -->
    <declare-styleable name="GameService">
        <!-- The service that hosts active game sessions.  This is required. -->
        <attr name="gameSessionService" format="string" />
    </declare-styleable>

    <!-- Use <code>game-mode-config</code> as the root tag of the XML resource that
         describes a GameModeConfig.
         Described here are the attributes that can be included in that tag. -->
    <declare-styleable name="GameModeConfig">
        <!-- Set true to opt in BATTERY mode. -->
        <attr name="supportsBatteryGameMode" format="boolean" />
        <!-- Set true to opt in PERFORMANCE mode. -->
        <attr name="supportsPerformanceGameMode" format="boolean" />
        <!-- Set true to enable ANGLE. -->
        <attr name="allowGameAngleDriver" format="boolean" />
        <!-- Set true to allow resolution downscaling intervention. -->
        <attr name="allowGameDownscaling" format="boolean" />
        <!-- Set true to allow FPS override intervention. -->
        <attr name="allowGameFpsOverride" 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
          -->
    <declare-styleable name="VoiceEnrollmentApplication">
        <!-- A globally unique ID for the keyphrase. @hide  -->
        <attr name="searchKeyphraseId" format="integer" />
        <!-- The actual keyphrase/hint text, or empty if not keyphrase dependent. @hide  -->
        <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  -->
        <attr name="searchKeyphraseSupportedLocales" format="string" />
        <!-- Flags for supported recognition modes. @hide  -->
        <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"/>
        <!-- Reference to a pointer drawable with HANDWRITING. -->
        <attr name="pointerIconHandwriting" 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. This is a list of
             BCP-47 conformant language tags separated by the delimiter ',' or '|'.
             Some examples of language tags are: en-US, zh-Hans-CN, el-Grek-polyton.
             It includes information for language code, country code, variant, and script
             code like ‘Latn’, ‘Cyrl’, etc. -->
        <attr name="keyboardLocale" format="string"/>
        <!-- The layout type of the given keyboardLayout.
             NOTE: The enum to int value mapping must remain stable -->
        <attr name="keyboardLayoutType" format="enum">
            <!-- Qwerty-based keyboard layout. -->
            <enum name="qwerty" value="1" />
            <!-- Qwertz-based keyboard layout. -->
            <enum name="qwertz" value="2" />
            <!-- Azerty-based keyboard layout. -->
            <enum name="azerty" value="3" />
            <!-- Dvorak keyboard layout. -->
            <enum name="dvorak" value="4" />
            <!-- Colemak keyboard layout. -->
            <enum name="colemak" value="5" />
            <!-- Workman keyboard layout. -->
            <enum name="workman" value="6" />
            <!-- Turkish-Q keyboard layout. -->
            <enum name="turkish_q" value="7" />
            <!-- Turkish-F keyboard layout. -->
            <enum name="turkish_f" value="8" />
            <!-- Keyboard layout that has been enhanced with a large number of extra characters. -->
            <enum name="extended" value="9" />
        </attr>
        <!-- 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" />
        <!-- Attribute whether the TV input service can pause recording programs.
             This value can be changed at runtime by calling
             {@link android.media.tv.TvInputManager#updateTvInputInfo(android.media.tv.TvInputInfo)}
             . -->
        <attr name="canPauseRecording" format="boolean" />
    </declare-styleable>

    <!-- Use <code>tv-interactive-app</code> as the root tag of the XML resource that describes a
         {@link android.media.tv.interactive.TvInteractiveAppService}, which is referenced
         from its
         {@link android.media.tv.interactive.TvInteractiveAppService#SERVICE_META_DATA}
         meta-data entry. Described here are the attributes that can be included in that tag. -->
    <declare-styleable name="TvInteractiveAppService">
        <!-- The interactive app types that the TV interactive app service supports.
             Reference to a string array resource that describes the supported types,
             e.g. HbbTv, Ginga. -->
        <attr name="supportedTypes" format="reference" />
    </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" />
        <!-- Whether the Drawer should be positioned at the top rather than at the bottom. -->
        <attr name="showAtTop" format="boolean" />
        <!-- By default `ResolverDrawerLayout`’s children views with `layout_ignoreOffset` property
             set to true have a fixed position in the layout that won’t be affected by the drawer’s
             movements. This property alternates that behavior. It specifies a child view’s id that
             will push all ignoreOffset siblings below it when the drawer is moved i.e. setting the
             top limit the ignoreOffset elements. -->
        <attr name="ignoreOffsetTopLimit" format="reference" />
    </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" />
        <attr name="layout_maxHeight" format="dimension"/>
    </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.colorBackgroundFloating, used for the TaskDescription background
                   color floating. -->
        <attr name="colorBackgroundFloating" />
        <!-- @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"/>
        <!-- @hide From Window.enforceStatusBarContrast -->
        <attr name="enforceStatusBarContrast"/>
        <!-- @hide From Window.enforceNavigationBarContrast -->
        <attr name="enforceNavigationBarContrast"/>
    </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" />
        <attr name="splashScreenTheme" format="reference"/>
    </declare-styleable>

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

    <!-- Attributes that are read when parsing a &lt;font&gt; tag, which is a child of
         &lt;font-family&gt;. 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" />
        <!-- The index of the font in the ttc (TrueType Collection) font file. If the font file
         referenced is not in the ttc format, this attribute needs not be specified.
         {@link android.graphics.Typeface.Builder#setTtcIndex(int)}.
         The default value is 0. More details about the TrueType Collection font format can be found
         here: https://en.wikipedia.org/wiki/TrueType#TrueType_Collection. -->
        <attr name="ttcIndex" format="integer" />
        <!-- The variation settings to be applied to the font. The string should be in the following
         format: "'tag1' value1, 'tag2' value2, ...". If the default variation settings should be
         used, or the font used does not support variation settings, this attribute needs not be
         specified. -->
        <attr name="fontVariationSettings" format="string" />
    </declare-styleable>

    <!-- Attributes that are read when parsing a &lt;fontfamily&gt; tag.
         {@deprecated Use Jetpack Core library instead.}
     -->
    <declare-styleable name="FontFamily">
        <!-- The authority of the Font Provider to be used for the request.
             {@deprecated Use app:fontProviderAuthority with Jetpack Core library instead for
              consistent behavior across all devices.}
         -->
        <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.
             {@deprecated Use app:fontProviderPackage with Jetpack Core library instead.}
         -->
        <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.
             {@deprecated Use app:fontProviderQuery with Jetpack Core library instead.}
         -->
        <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.
             {@deprecated Use app:fontProviderCerts with Jetpack Core library instead.}
         -->
        <attr name="fontProviderCerts" format="reference" />
        <!-- Provides the system font family name to check before downloading the font. For example
        if the fontProviderQuery asked for "Sans Serif", it is possible to define
        fontProviderSystemFontFamily as "sans-serif" to tell the system to use "sans-serif" font
        family if it exists on the system.
         -->
        <attr name="fontProviderSystemFontFamily" format="string" />
    </declare-styleable>

    <!-- Attributes that are read when parsing a  tag. -->
    <declare-styleable name="VideoView2">
        <attr name="enableControlView" format="boolean" />
        <attr name="enableSubtitle" format="boolean" />
        <attr name="viewType" format="enum">
            <enum name="surfaceView" value="0" />
            <enum name="textureView" value="1" />
        </attr>
    </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" />
        <attr name="notificationHeaderAppNameVisibility" format="enum">
            <!-- 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>
    </declare-styleable>

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

    <declare-styleable name="Magnifier">
        <attr name="magnifierWidth" format="dimension" />
        <attr name="magnifierHeight" format="dimension" />
        <attr name="magnifierZoom" format="float" />
        <attr name="magnifierElevation" format="dimension" />
        <attr name="magnifierVerticalOffset" format="dimension" />
        <attr name="magnifierHorizontalOffset" format="dimension" />
        <attr name="magnifierColorOverlay" format="color" />
    </declare-styleable>

    <attr name="autoSizePresetSizes" />

    <attr name="iconfactoryIconSize" format="dimension"/>
    <attr name="iconfactoryBadgeSize" format="dimension"/>
    <!-- Perceptual luminance of a color, in accessibility friendly color space. From 0 to 100. -->
    <attr name="lStar" format="float"/>

    <!-- The attributes of the {@code <locale-config>} tag. -->
    <!-- @FlaggedApi("android.content.res.default_locale") -->
    <declare-styleable name="LocaleConfig">
        <!-- The <a href="https://www.rfc-editor.org/rfc/bcp/bcp47.txt">IETF BCP47 language tag</a>
       the strings in values/strings.xml (the default strings in the directory with no locale
       qualifier) are in. -->
        <attr name="defaultLocale" format="string"/>
    </declare-styleable>

    <!-- The attributes of the {@code <locale>} tag within {@code <locale-config>}. -->
    <declare-styleable name="LocaleConfig_Locale">
        <!-- The <a href="https://www.rfc-editor.org/rfc/bcp/bcp47.txt">IETF BCP47 language tag</a>
        of the supported locale. {@link android.app.LocaleConfig} -->
        <attr name="name" />
    </declare-styleable>

    <!-- @hide -->
    <declare-styleable name="CachingIconView">
        <!-- Maximum width of displayed drawable. Drawables exceeding this size will be downsampled. -->
        <attr name="maxDrawableWidth" format="dimension"/>
        <!-- Maximum width of height drawable. Drawables exceeding this size will be downsampled. -->
        <attr name="maxDrawableHeight" format="dimension"/>
    </declare-styleable>

    <!-- =============================== -->
    <!-- Credential Manager attributes -->
    <!-- =============================== -->
    <eat-comment />

    <!-- Contains Credential Provider related metadata. Since providers are exposed
         as services these should live under the service.
    -->
    <declare-styleable name="CredentialProvider">
        <!-- A string that is displayed to the user in the Credential Manager settings
             screen that can be used to provide more information about a provider. For
             longer strings it will be truncated. -->
        <attr name="settingsSubtitle" format="string" />
        <!-- Fully qualified class name of an activity that allows the user to modify
             the settings for this service. -->
        <attr name="settingsActivity" />
    </declare-styleable>

    <!-- A list of capabilities that indicates to the OS what kinds of credentials
             this provider supports. -->
    <declare-styleable name="CredentialProvider_Capabilities" parent="CredentialProvider">
        <!-- An individual capability declared by the provider. -->
        <attr name="capability" format="string" />
    </declare-styleable>
    </resources>
