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

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

        <!-- 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. -->
        <attr name="windowSplashScreenAnimationDuration" format="integer"/>

        <!-- Place an drawable image in the bottom of the starting window, it 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"/>
    </declare-styleable>

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

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

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

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

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

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

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

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

    </declare-styleable>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        <!-- Defines the drawable to draw over the content. This can be used as an overlay.
             The foreground drawable participates in the padding of the content if the gravity
             is set to fill. -->
        <attr name="foreground" format="reference|color" />
        <!-- Defines the gravity to apply to the foreground drawable. The gravity defaults
             to fill. -->
        <attr name="foregroundGravity">
            <!-- Push object to the top of its container, not changing its size. -->
            <flag name="top" value="0x30" />
            <!-- Push object to the bottom of its container, not changing its size. -->
            <flag name="bottom" value="0x50" />
            <!-- Push object to the left of its container, not changing its size. -->
            <flag name="left" value="0x03" />
            <!-- Push object to the right of its container, not changing its size. -->
            <flag name="right" value="0x05" />
            <!-- Place object in the vertical center of its container, not changing its size. -->
            <flag name="center_vertical" value="0x10" />
            <!-- Grow the vertical size of the object if needed so it completely fills its container. -->
            <flag name="fill_vertical" value="0x70" />
            <!-- Place object in the horizontal center of its container, not changing its size. -->
            <flag name="center_horizontal" value="0x01" />
            <!-- Grow the horizontal size of the object if needed so it completely fills its container. -->
            <flag name="fill_horizontal" value="0x07" />
            <!-- Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. -->
            <flag name="center" value="0x11" />
            <!-- Grow the horizontal and vertical size of the object if needed so it completely fills its container. -->
            <flag name="fill" value="0x77" />
            <!-- Additional option that can be set to have the top and/or bottom edges of
                 the child clipped to its container's bounds.
                 The clip will be based on the vertical gravity: a top gravity will clip the bottom
                 edge, a bottom gravity will clip the top edge, and neither will clip both edges. -->
            <flag name="clip_vertical" value="0x80" />
            <!-- Additional option that can be set to have the left and/or right edges of
                 the child clipped to its container's bounds.
                 The clip will be based on the horizontal gravity: a left gravity will clip the right
                 edge, a right gravity will clip the left edge, and neither will clip both edges. -->
            <flag name="clip_horizontal" value="0x08" />
        </attr>
        <!-- Defines whether the foreground drawable should be drawn inside the padding.
             This property is turned on by default. -->
        <attr name="foregroundInsidePadding" format="boolean" />
        <!-- Tint to apply to the foreground. -->
        <attr name="foregroundTint" format="color" />
        <!-- Blending mode used to apply the foreground tint. -->
        <attr name="foregroundTintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>

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

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

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

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

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

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

        <!-- Defines the next keyboard navigation cluster.

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

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

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

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

        <!-- 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" />
    </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"/>
        <attr name="__removed2" format="boolean" />
        <!-- Specifies whether the IME supports showing inline suggestions. -->
        <attr name="supportsInlineSuggestions" 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" />
    </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" />
    </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" />
        </attr>
        <!-- Component name of an activity that allows the user to modify
             the settings for this service. This setting cannot be changed at runtime. -->
        <attr name="settingsActivity" />
        <!-- Attribute whether the accessibility service wants to be able to retrieve the
             active window content. This setting cannot be changed at runtime.
             <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, to help users understand
             how the service can help them.-->
        <attr name="htmlDescription" format="reference"/>

        <!-- Short description of the accessibility service purpose or behavior.-->
        <attr name="description" />
        <!-- Brief summary of the accessibility service purpose or behavior. -->
        <attr name="summary" />
    </declare-styleable>

    <!-- Use <code>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">
        <!-- Short description of the target of accessibility shortcut purpose or behavior.-->
        <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 purpose or behavior, to help
             users understand how the target of accessibility shortcut can help them. -->
        <attr name="htmlDescription" format="reference"/>
        <!-- Component name of an activity that allows the user to modify the settings for this
             target of accessibility shortcut. -->
        <attr name="settingsActivity" />
    </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"/>
    </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"/>
    </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">
    </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 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"/>
    </declare-styleable>
    <declare-styleable name="TextClock">
        <!-- Specifies the formatting pattern used to show the time and/or date
             in 12-hour mode. Please refer to {@link android.text.format.DateFormat}
             for a complete description of accepted formatting patterns.
             The default pattern is a locale-appropriate equivalent of "h:mm a". -->
        <attr name="format12Hour" format="string"/>
        <!-- Specifies the formatting pattern used to show the time and/or date
             in 24-hour mode. Please refer to {@link android.text.format.DateFormat}
             for a complete description of accepted formatting patterns.
             The default pattern is a locale-appropriate equivalent of "H:mm". -->
        <attr name="format24Hour" format="string"/>
        <!-- Specifies the time zone to use. When this attribute is specified, the
             TextClock will ignore the time zone of the system. To use the user's
             time zone, do not specify this attribute. The default value is the
             user's time zone. Please refer to {@link java.util.TimeZone} for more
             information about time zone ids. -->
        <attr name="timeZone" format="string"/>
    </declare-styleable>
    <declare-styleable name="TextSwitcher">
    </declare-styleable>
    <declare-styleable name="TextView">
        <!-- Determines the minimum type that getText() will return.
             The default is "normal".
             Note that EditText and LogTextBox always return Editable,
             even if you specify something less powerful here. -->
        <attr name="bufferType">
            <!-- Can return any CharSequence, possibly a
             Spanned one if the source text was Spanned. -->
            <enum name="normal" value="0" />
            <!-- Can only return Spannable. -->
            <enum name="spannable" value="1" />
            <!-- Can only return Spannable and Editable. -->
            <enum name="editable" value="2" />
        </attr>
        <!-- Text to display. -->
        <attr name="text" format="string" localization="suggested" />
        <!-- Hint text to display when the text is empty. -->
        <attr name="hint" format="string" />
        <!-- Text color. -->
        <attr name="textColor" />
        <!-- Color of the text selection highlight. -->
        <attr name="textColorHighlight" />
        <!-- Color of the hint text. -->
        <attr name="textColorHint" />
        <!-- Base text color, typeface, size, and style. -->
        <attr name="textAppearance" />
        <!-- Size of the text. Recommended dimension type for text is "sp" for scaled-pixels (example: 15sp). -->
        <attr name="textSize" />
        <!-- Sets the horizontal scaling factor for the text. -->
        <attr name="textScaleX" format="float" />
        <!-- Typeface (normal, sans, serif, monospace) for the text. -->
        <attr name="typeface" />
        <!-- Style (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" />
        </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 apperance. Default value is true. -->
        <attr name="filter" format="boolean" />
        <!-- Enables or disables dithering of the bitmap if the bitmap does not have the
             same pixel configuration as the screen (for instance: a ARGB 8888 bitmap with
             an RGB 565 screen). Default value is true. -->
        <attr name="dither" />
        <!-- Defines the gravity for the bitmap. The gravity indicates where to position
             the drawable in its container if the bitmap is smaller than the container. -->
        <attr name="gravity" />
        <!-- Defines the tile mode. When the tile mode is enabled, the bitmap is repeated.
             Gravity is ignored when the tile mode is enabled. Default value is "disabled". -->
        <attr name="tileMode">
            <!-- Do not tile the bitmap. This is the default value. -->
            <enum name="disabled" value="-1" />
            <!-- Replicates the edge color. -->
            <enum name="clamp" value="0" />
            <!-- Repeats the bitmap in both direction. -->
            <enum name="repeat" value="1" />
            <!-- Repeats the shader's image horizontally and vertically, alternating
                 mirror images so that adjacent images always seam. -->
            <enum name="mirror" value="2" />
        </attr>
        <!-- Defines the horizontal tile mode. When the tile mode is enabled, the bitmap is repeated.
             Gravity is ignored when the tile mode is enabled. Default value is "disabled". -->
        <attr name="tileModeX">
            <!-- Do not tile the bitmap. This is the default value. -->
            <enum name="disabled" value="-1" />
            <!-- Replicates the edge color. -->
            <enum name="clamp" value="0" />
            <!-- Repeats the bitmap horizontally. -->
            <enum name="repeat" value="1" />
            <!-- Repeats the shader's image horizontally, alternating
                 mirror images so that adjacent images always seam. -->
            <enum name="mirror" value="2" />
        </attr>
        <!-- Defines the vertical tile mode. When the tile mode is enabled, the bitmap is repeated.
             Gravity is ignored when the tile mode is enabled. Default value is "disabled". -->
        <attr name="tileModeY">
            <!-- Do not tile the bitmap. This is the default value. -->
            <enum name="disabled" value="-1" />
            <!-- Replicates the edge color. -->
            <enum name="clamp" value="0" />
            <!-- Repeats the bitmap vertically. -->
            <enum name="repeat" value="1" />
            <!-- Repeats the shader's image vertically, alternating
                 mirror images so that adjacent images always seam. -->
            <enum name="mirror" value="2" />
        </attr>
        <!-- Enables or disables the mipmap hint. See
            {@link android.graphics.Bitmap#setHasMipMap(boolean)} for more information.
            Default value is false. -->
        <attr name="mipMap" format="boolean" />
        <!-- Indicates if the drawable needs to be mirrored when its layout direction is
             RTL (right-to-left). -->
        <attr name="autoMirrored" />
        <!-- If set, specifies the color to apply to the drawable as a tint. By default,
             no tint is applied. May be a color state list. -->
        <attr name="tint" />
        <!-- When a tint color is set, specifies its Porter-Duff blending mode. The
             default value is src_in, which treats the drawable as an alpha mask. -->
        <attr name="tintMode">
            <!-- The tint is drawn on top of the drawable.
                 [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
            <enum name="src_over" value="3" />
            <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
                 color channels are thrown out. [Sa * Da, Sc * Da] -->
            <enum name="src_in" value="5" />
            <!-- The tint is drawn above the drawable, but with the drawable’s alpha
                 channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
            <enum name="src_atop" value="9" />
            <!-- Multiplies the color and alpha channels of the drawable with those of
                 the tint. [Sa * Da, Sc * Dc] -->
            <enum name="multiply" value="14" />
            <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
            <enum name="screen" value="15" />
            <!-- Combines the tint and drawable color and alpha channels, clamping the
                 result to valid color values. Saturate(S + D) -->
            <enum name="add" value="16" />
        </attr>
        <!-- Specifies the alpha multiplier to apply to the base drawable. -->
        <attr name="alpha" />
    </declare-styleable>

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

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

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

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

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

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

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

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

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

    <declare-styleable name="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>

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

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

    </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.  When the user
             selects this voice interaction service, they will also be implicitly selecting
             the component here for their recognition service. -->
        <attr name="recognitionService" format="string" />
        <attr name="settingsActivity" />
        <!-- Flag indicating whether this voice interaction service is capable of handling the
             assist action. -->
        <attr name="supportsAssist" format="boolean" />
        <!-- Flag indicating whether this voice interaction service is capable of being launched
             from the keyguard. -->
        <attr name="supportsLaunchVoiceAssistFromKeyguard" format="boolean" />
        <!-- Flag indicating whether this voice interaction service can handle local voice
             interaction requests from an Activity. This flag is new in
             {@link android.os.Build.VERSION_CODES#N} and not used in previous versions. -->
        <attr name="supportsLocalInteraction" format="boolean" />
        <!-- The service that provides {@link android.service.voice.HotwordDetectionService}.
             @hide @SystemApi -->
        <attr name="hotwordDetectionService" format="string" />
    </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"/>
    </declare-styleable>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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