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

        <!-- Default disabled alpha for widgets that set enabled/disabled alpha programmatically. -->
        <attr name="disabledAlpha" format="float" />
        <!-- Default background dim amount when a menu, dialog, or something similar pops up. -->
        <attr name="backgroundDimAmount" format="float" />
        <!-- Control whether dimming behind the window is enabled.  The default
             theme does not set this value, meaning it is based on whether the
             window is floating. -->
        <attr name="backgroundDimEnabled" format="boolean" />

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        <!-- =================== -->
        <!-- Action bar styles   -->
        <!-- =================== -->
        <eat-comment />
        <!-- Default style for tabs within an action bar -->
        <attr name="actionBarTabStyle" format="reference" />
        <attr name="actionBarTabBarStyle" format="reference" />
        <attr name="actionBarTabTextStyle" format="reference" />
        <attr name="actionOverflowButtonStyle" format="reference" />
        <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 />
        <attr name="actionModeStyle" format="reference" />
        <attr name="actionModeCloseButtonStyle" format="reference" />
        <!-- Background drawable to use for action mode UI -->
        <attr name="actionModeBackground" format="reference" />
        <!-- Background drawable to use for action mode UI in the lower split bar -->
        <attr name="actionModeSplitBackground" format="reference" />
        <!-- Drawable to use for the close action mode button -->
        <attr name="actionModeCloseDrawable" format="reference" />

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

    </declare-styleable>

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

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

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

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

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

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

        <!-- Sets the padding, in pixels, of all four edges.  Padding is defined as
             space between the edges of the view and the view's content. A views size
             will include it's 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 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" />

        <!-- Boolean that controls whether a view can take focus.  By default the user can not
             move focus to a view; by setting this attribute to true the view is
             allowed to 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" />

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        <!-- Defines the direction of the text. A heuristic is used to determine the resolved text
              direction of paragraphs. -->
         <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. A heuristic is used to determine the resolved
            text alignment. -->
        <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, e.g. ALIGN_NORMAL. -->
            <enum name="textStart" value="2" />
            <!-- Align to the end of the paragraph, e.g. ALIGN_OPPOSITE. -->
            <enum name="textEnd" value="3" />
            <!-- Center the paragraph, e.g. 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>

        <!-- Controls how this View is important for accessibility which is if it fires
             accessibility events and if it 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" />

    </declare-styleable>

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

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

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

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

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

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

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

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

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

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

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

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

    <!-- This is the basic set of layout attributes for layout managers that
         wish to place margins around their child views.
         These attributes are specified with the rest of
         a view's normal attributes (such as {@link android.R.attr#background},
         but will be parsed by the view's parent and ignored by the child.
        <p>The values defined here correspond to the base layout attribute
        class {@link android.view.ViewGroup.MarginLayoutParams}. -->
    <declare-styleable name="ViewGroup_MarginLayout">
        <attr name="layout_width" />
        <attr name="layout_height" />
        <!--  Specifies extra space on the left, top, right and bottom
              sides of this view. 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"  />
    </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 (e.g. 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" />
    </declare-styleable>

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

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

    <!-- This is the subtype of the spell checker. Subtype can describe locales (e.g. en_US, 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 (e.g. en_US, 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
             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 serivce 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 serivce 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 serivce 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 serivce. This setting can be changed at runtime by calling
             {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)
             android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. -->
        <attr name="notificationTimeout" format="integer" />
        <!-- Additional flags as specified in
             {@link android.accessibilityservice.AccessibilityServiceInfo}.
             This setting can be changed at runtime by calling
             {@link android.accessibilityservice.AccessibilityService#setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)
             android.accessibilityservice.AccessibilityService.setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo)}. -->
        <attr name="accessibilityFlags">
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#DEFAULT} -->
            <flag name="flagDefault" value="0x00000001" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_INCLUDE_NOT_IMPORTANT_VIEWS} -->
            <flag name="flagIncludeNotImportantViews" value="0x00000002" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE} -->
            <flag name="flagRequestTouchExplorationMode" value="0x00000004" />
            <!-- Has flag {@link android.accessibilityservice.AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY} -->
            <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" />
        </attr>
        <!-- Component name of an activity that allows the user to modify
             the settings for this service. This setting cannot be changed at runtime. -->
        <attr name="settingsActivity" />
        <!-- Attribute whether the accessibility service wants to be able to retrieve the
             active window content. This setting cannot be changed at runtime. -->
        <attr name="canRetrieveWindowContent" format="boolean" />
        <!-- Attribute whether the accessibility service wants to be able to request touch
             exploration mode in which touched items are spoken aloud and the UI can be
             explored via gestures.
             <p>
             Required to allow setting the {@link android.accessibilityservice
             #AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE} flag.
             </p>
         -->
        <attr name="canRequestTouchExplorationMode" format="boolean" />
        <!-- Attribute whether the accessibility service wants to be able to request enhanced
             web accessibility enhancements. For example, installing scripts to make app
             content more accessible.
             <p>
             Required to allow setting the {@link android.accessibilityservice
             #AccessibilityServiceInfo#FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY} flag.
             </p>
         -->
        <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.
             <p>
             Required to allow setting the {@link android.accessibilityservice
             #AccessibilityServiceInfo#FLAG_CAN_CONTROL_MAGNIFICATION} flag.
             </p>
         -->
        <attr name="canControlMagnification" format="boolean" />
        <!-- Attribute whether the accessibility service wants to be able to perform gestures.
             <p>
             Required to allow setting the {@link android.accessibilityservice
             #AccessibilityServiceInfo#FLAG_CAN_PERFORM_GESTURES} flag.
             </p>
         -->
        <attr name="canPerformGestures" format="boolean" />
        <!-- Short description of the accessibility service purpose or behavior.-->
        <attr name="description" />
    </declare-styleable>

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

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

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

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

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

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

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

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

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

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

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

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

        <!-- When set to true, the list will always show the fast scroll interface.
             This setting implies fastScrollEnabled. -->
        <attr name="fastScrollAlwaysVisible" format="boolean" />
    </declare-styleable>
    <!-- @hide -->
    <declare-styleable name="RecycleListView">
        <!-- Bottom padding to use when no buttons are present. -->
        <attr name="paddingBottomNoButtons" format="dimension" />
        <!-- Top padding to use when no title is present. -->
        <attr name="paddingTopNoTitle" format="dimension" />
    </declare-styleable>
    <declare-styleable name="AbsSpinner">
        <!-- Reference to an array resource that will populate the Spinner.  For static content,
             this is simpler than populating the Spinner programmatically. -->
        <attr name="entries" />
    </declare-styleable>
    <declare-styleable name="AnalogClock">
        <attr name="dial" format="reference"/>
        <attr name="hand_hour" format="reference"/>
        <attr name="hand_minute" format="reference"/>
    </declare-styleable>
    <declare-styleable name="Button">
    </declare-styleable>
    <declare-styleable name="Chronometer">
        <!-- Format string: if specified, the Chronometer will display this
             string, with the first "%s" replaced by the current timer value
             in "MM:SS" or "H:MM:SS" form.
             If no format string is specified, the Chronometer will simply display
             "MM:SS" or "H:MM:SS". -->
        <attr name="format" format="string" localization="suggested" />
        <!-- Specifies whether this Chronometer counts down or counts up from the base.
              If not specified this is false and the Chronometer counts up. -->
        <attr name="countDown" format="boolean" />
    </declare-styleable>
    <declare-styleable name="CompoundButton">
        <!-- Indicates the initial checked state of this button. -->
        <attr name="checked" format="boolean" />
        <!-- Drawable used for the button graphic (e.g. checkbox, radio button, etc). -->
        <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" />
        <!-- Set a tinting color for the image. By default, the tint will blend using SRC_ATOP mode. -->
        <attr name="tint" format="color" />
        <!-- If true, the image view will be baseline aligned with based on its
             bottom edge. -->
        <attr name="baselineAlignBottom" format="boolean" />
         <!-- If true, the image will be cropped to fit within its padding. -->
        <attr name="cropToPadding" format="boolean" />
        <!-- The offset of the baseline within this view. See {see android.view.View#getBaseline}
             for details -->
        <attr name="baseline" format="dimension" />
        <!-- @hide The alpha value (0-255) set on the ImageView's drawable. Equivalent
             to calling ImageView.setAlpha(int), not the same as View.setAlpha(float). -->
        <attr name="drawableAlpha" format="integer" />
        <!-- Blending mode used to apply the image tint. -->
        <attr name="tintMode" />
    </declare-styleable>
    <declare-styleable name="ToggleButton">
        <!-- The text for the button when it is checked. -->
        <attr name="textOn" format="string" />
        <!-- The text for the button when it is not checked. -->
        <attr name="textOff" format="string" />
        <!-- The alpha to apply to the indicator when disabled. -->
        <attr name="disabledAlpha" />
    </declare-styleable>
    <declare-styleable name="RelativeLayout">
        <attr name="gravity" />
        <!-- Indicates what view should not be affected by gravity. -->
        <attr name="ignoreGravity" format="reference" />
    </declare-styleable>
    <declare-styleable name="LinearLayout">
        <!-- Should the layout be a column or a row?  Use "horizontal"
             for a row, "vertical" for a column.  The default is
             horizontal. -->
        <attr name="orientation" />
        <attr name="gravity" />
        <!-- When set to false, prevents the layout from aligning its children's
             baselines. This attribute is particularly useful when the children
             use different values for gravity. The default value is true. -->
        <attr name="baselineAligned" format="boolean" />
        <!-- When a linear layout is part of another layout that is baseline
          aligned, it can specify which of its children to baseline align to
          (that is, which child TextView).-->
        <attr name="baselineAlignedChildIndex" format="integer" min="0"/>
        <!-- Defines the maximum weight sum. If unspecified, the sum is computed
             by adding the layout_weight of all of the children. This can be
             used for instance to give a single child 50% of the total available
             space by giving it a layout_weight of 0.5 and setting the weightSum
             to 1.0. -->
        <attr name="weightSum" format="float" />
        <!-- When set to true, all children with a weight will be considered having
             the minimum size of the largest child. If false, all children are
             measured normally. -->
        <attr name="measureWithLargestChild" format="boolean" />
        <!-- Drawable to use as a vertical divider between buttons. -->
        <attr name="divider" />
        <!-- Setting for which dividers to show. -->
        <attr name="showDividers">
            <flag name="none" value="0" />
            <flag name="beginning" value="1" />
            <flag name="middle" value="2" />
            <flag name="end" value="4" />
        </attr>
        <!-- Size of padding on either end of a divider. -->
        <attr name="dividerPadding" format="dimension" />
    </declare-styleable>
    <declare-styleable name="GridLayout">
        <!-- The orientation property is not used during layout. It is only used to
        allocate row and column parameters when they are not specified by its children's
        layout paramters. GridLayout works like LinearLayout in this case;
        putting all the components either in a single row or in a single column -
        depending on the value of this flag. In the horizontal case, a columnCount
        property may be additionally supplied to force new rows to be created when a
        row is full. The rowCount attribute may be used similarly in the vertical case.
        The default is horizontal. -->
        <attr name="orientation" />
        <!-- The maxmimum number of rows to create when automatically positioning children. -->
        <attr name="rowCount" format="integer" />
        <!-- The maxmimum number of columns to create when automatically positioning children. -->
        <attr name="columnCount" format="integer" />
        <!-- When set to true, tells GridLayout to use default margins when none are specified
        in a view's layout parameters.
        The default value is false.
        See {@link android.widget.GridLayout#setUseDefaultMargins(boolean)}.-->
        <attr name="useDefaultMargins" format="boolean" />
        <!-- When set to alignMargins, causes alignment to take place between the outer
        boundary of a view, as defined by its margins. When set to alignBounds,
        causes alignment to take place between the edges of the view.
        The default is alignMargins.
        See {@link android.widget.GridLayout#setAlignmentMode(int)}.-->
        <attr name="alignmentMode" />
        <!-- When set to true, forces row boundaries to appear in the same order
        as row indices.
        The default is true.
        See {@link android.widget.GridLayout#setRowOrderPreserved(boolean)}.-->
        <attr name="rowOrderPreserved" format="boolean" />
        <!-- When set to true, forces column boundaries to appear in the same order
        as column indices.
        The default is true.
        See {@link android.widget.GridLayout#setColumnOrderPreserved(boolean)}.-->
        <attr name="columnOrderPreserved" format="boolean" />
    </declare-styleable>
    <declare-styleable name="ListView">
        <!-- Reference to an array resource that will populate the ListView.  For static content,
             this is simpler than populating the ListView programmatically. -->
        <attr name="entries" />
        <!-- Drawable or color to draw between list items. -->
        <attr name="divider" format="reference|color" />
        <!-- Height of the divider. Will use the intrinsic height of the divider if this
             is not specified. -->
        <attr name="dividerHeight" format="dimension" />
        <!-- When set to false, the ListView will not draw the divider after each header view.
             The default value is true. -->
        <attr name="headerDividersEnabled" format="boolean" />
        <!-- When set to false, the ListView will not draw the divider before each footer view.
             The default value is true. -->
        <attr name="footerDividersEnabled" format="boolean" />
        <!-- Drawable to draw above list content. -->
        <attr name="overScrollHeader" format="reference|color" />
        <!-- Drawable to draw below list content. -->
        <attr name="overScrollFooter" format="reference|color" />
    </declare-styleable>
    <declare-styleable name="PreferenceFrameLayout">
        <!-- Padding to use at the top of the prefs content. -->
        <attr name="borderTop" format="dimension" />
        <!-- Padding to use at the bottom of the prefs content. -->
        <attr name="borderBottom" format="dimension" />
        <!-- Padding to use at the left of the prefs content. -->
        <attr name="borderLeft" format="dimension" />
        <!-- Padding to use at the right of the prefs content. -->
        <attr name="borderRight" format="dimension" />
    </declare-styleable>
    <declare-styleable name="PreferenceFrameLayout_Layout">
        <!-- Padding to use at the top of the prefs content. -->
        <attr name="layout_removeBorders" format="boolean" />
    </declare-styleable>
    <declare-styleable name="MenuView">
        <!-- Default appearance of menu item text. -->
        <attr name="itemTextAppearance" format="reference" />
        <!-- Default horizontal divider between rows of menu items. -->
        <attr name="horizontalDivider" format="reference" />
        <!-- Default vertical divider between menu items. -->
        <attr name="verticalDivider" format="reference" />
        <!-- Default background for the menu header. -->
        <attr name="headerBackground" format="color|reference" />
        <!-- Default background for each menu item. -->
        <attr name="itemBackground" format="color|reference" />
        <!-- Default animations for the menu. -->
        <attr name="windowAnimationStyle" />
        <!-- Default disabled icon alpha for each menu item that shows an icon. -->
        <attr name="itemIconDisabledAlpha" format="float" />
        <!-- Whether space should be reserved in layout when an icon is missing. -->
        <attr name="preserveIconSpacing" format="boolean" />
        <!-- Drawable for the arrow icon indicating a particular item is a submenu. -->
        <attr name="subMenuArrow" format="reference" />
    </declare-styleable>
    <declare-styleable name="IconMenuView">
        <!-- Defines the height of each row. -->
        <attr name="rowHeight" format="dimension" />
        <!-- Defines the maximum number of rows displayed. -->
        <attr name="maxRows" format="integer" />
        <!-- Defines the maximum number of items per row. -->
        <attr name="maxItemsPerRow" format="integer" />
        <!-- Defines the maximum number of items to show. -->
        <attr name="maxItems" format="integer" />
        <!-- 'More' icon. -->
        <attr name="moreIcon" format="reference" />
    </declare-styleable>

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

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

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

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

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

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

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

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

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

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

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


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

        <!-- Indicates that the content of a non-editable text can be selected. -->
        <attr name="textIsSelectable" />
        <!-- Present the text in ALL CAPS. This may use a small-caps form when available. -->
        <attr name="textAllCaps" />
        <!-- Elegant text height, especially for less compacted complex script text. -->
        <attr name="elegantTextHeight" />
        <!-- Text letter-spacing. -->
        <attr name="letterSpacing" />
        <!-- Font feature settings. -->
        <attr name="fontFeatureSettings" />
        <!-- Break strategy (control over paragraph layout). -->
        <attr name="breakStrategy">
            <!-- Line breaking uses simple strategy. -->
            <enum name="simple" value="0" />
            <!-- Line breaking uses high-quality strategy, including hyphenation. -->
            <enum name="high_quality" value="1" />
            <!-- Line breaking strategy balances line lengths. -->
            <enum name="balanced" value="2" />
        </attr>
        <!-- Frequency of automatic hyphenation. -->
        <attr name="hyphenationFrequency">
            <!-- No hyphenation. -->
            <enum name="none" value="0" />
            <!-- Less frequent hyphenation, useful for informal use cases, such
            as chat messages. -->
            <enum name="normal" value="1" />
            <!-- Standard amount of hyphenation, useful for running text and for
            screens with limited space for text. -->
            <enum name="full" value="2" />
        </attr>
    </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" />
    </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" />
        <attr name="layout_weight" format="float" />
        <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>

    <!-- attributes for internal rotary widget used in lock screen and phone app
      @hide -->
    <declare-styleable name="RotarySelector">
        <!-- Use "horizontal" or "vertical".  The default is horizontal. -->
        <attr name="orientation" />
    </declare-styleable>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    <!-- Drawable used to render 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" />
        <!-- Indicates whether the drawable's level affects the way the gradient is drawn. -->
        <attr name="useLevel" />
        <!-- If set, specifies the color to apply to the drawable as a tint. By default,
             no tint is applied. May be a color state list. -->
        <attr name="tint" />
        <!-- When a tint color is set, specifies its Porter-Duff blending mode. The
             default value is src_in, which treats the drawable as an alpha mask. -->
        <attr name="tintMode" />
        <!-- Left optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetLeft" />
        <!-- Top optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetTop" />
        <!-- Right optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetRight" />
        <!-- Bottom optical inset.
             @hide Until optical insets are fully supported. -->
        <attr name="opticalInsetBottom" />
    </declare-styleable>

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

    <!-- Used to describe the gradient used to fill the shape of a GradientDrawable. -->
    <declare-styleable name="GradientDrawableGradient">
        <!-- Start color of the gradient. -->
        <attr name="startColor" format="color" />
        <!-- Optional center color. For linear gradients, use centerX or centerY
             to place the center color. -->
        <attr name="centerColor" format="color" />
        <!-- End color of the gradient. -->
        <attr name="endColor" format="color" />
        <attr name="useLevel" format="boolean" />
        <!-- Angle of the gradient. -->
        <attr name="angle" format="float" />
        <!-- Type of gradient. The default type is linear. -->
        <attr name="type">
            <!-- Linear gradient. -->
            <enum name="linear" value="0" />
            <!-- Radial, or circular, gradient. -->
            <enum name="radial" value="1" />
            <!-- Sweep, or angled or diamond, gradient. -->
            <enum name="sweep"  value="2" />
        </attr>
        <!-- X coordinate of the origin of the gradient within the shape. -->
        <attr name="centerX" format="float|fraction" />
        <!-- Y coordinate of the origin of the gradient within the shape. -->
        <attr name="centerY" format="float|fraction" />
        <!-- Radius of the gradient, used only with radial gradient. -->
        <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 (e.g. left when layout direction is LTR). -->
        <attr name="paddingStart" />
        <!-- Explicit end padding. Overrides child padding. Takes precedence
             over absolute padding (e.g. 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="dimension"/>
        <attr name="insetLeft" format="dimension" />
        <attr name="insetRight" format="dimension" />
        <attr name="insetTop" format="dimension" />
        <attr name="insetBottom" format="dimension" />
    </declare-styleable>

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

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

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

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

    <declare-styleable name="ScaleDrawable">
        <!-- Scale width, expressed as a percentage of the drawable's bound. The value's
             format is XX%. For instance: 100%, 12.5%, etc.-->
        <attr name="scaleWidth" format="string" />
        <!-- Scale height, expressed as a percentage of the drawable's bound. The value's
             format is XX%. For instance: 100%, 12.5%, etc.-->
        <attr name="scaleHeight" format="string" />
        <!-- Specifies where the drawable is positioned after scaling. The default value is
             left. -->
        <attr name="scaleGravity">
            <!-- Push object to the top of its container, not changing its size. -->
            <flag name="top" value="0x30" />
            <!-- Push object to the bottom of its container, not changing its size. -->
            <flag name="bottom" value="0x50" />
            <!-- Push object to the left of its container, not changing its size. -->
            <flag name="left" value="0x03" />
            <!-- Push object to the right of its container, not changing its size. -->
            <flag name="right" value="0x05" />
            <!-- Place object in the vertical center of its container, not changing its size. -->
            <flag name="center_vertical" value="0x10" />
            <!-- Grow the vertical size of the object if needed so it completely fills its container. -->
            <flag name="fill_vertical" value="0x70" />
            <!-- Place object in the horizontal center of its container, not changing its size. -->
            <flag name="center_horizontal" value="0x01" />
            <!-- Grow the horizontal size of the object if needed so it completely fills its container. -->
            <flag name="fill_horizontal" value="0x07" />
            <!-- Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. -->
            <flag name="center" value="0x11" />
            <!-- Grow the horizontal and vertical size of the object if needed so it completely fills its container. -->
            <flag name="fill" value="0x77" />
            <!-- Additional option that can be set to have the top and/or bottom edges of
                 the child clipped to its container's bounds.
                 The clip will be based on the vertical gravity: a top gravity will clip the bottom
                 edge, a bottom gravity will clip the top edge, and neither will clip both edges. -->
            <flag name="clip_vertical" value="0x80" />
            <!-- Additional option that can be set to have the left and/or right edges of
                 the child clipped to its container's bounds.
                 The clip will be based on the horizontal gravity: a left gravity will clip the right
                 edge, a right gravity will clip the left edge, and neither will clip both edges. -->
            <flag name="clip_horizontal" value="0x08" />
            <!-- Push object to the beginning of its container, not changing its size. -->
            <flag name="start" value="0x00800003" />
            <!-- Push object to the end of its container, not changing its size. -->
            <flag name="end" value="0x00800005" />
        </attr>
        <!-- Specifies the initial drawable level in the range 0 to 10000. -->
        <attr name="level" format="integer" />
        <!-- Reference to a drawable resource to draw with the specified scale. -->
        <attr name="drawable" />
        <!-- Use the drawable's intrinsic width and height as minimum size values.
             Useful if the target drawable is a 9-patch or otherwise should not be scaled
             down beyond a minimum size. -->
        <attr name="useIntrinsicSizeAsMinimum" format="boolean" />
    </declare-styleable>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

        <!-- If provided, this is the trigger indicating that the searchable activity
            provides suggestions as well.  The value must be a fully-qualified content provider
            authority (e.g. "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" />

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

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

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

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

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

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

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

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

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

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

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

    </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 (e.g., 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 a PreferenceActivity screen. -->
        <attr name="title" />
        <!-- The summary for the Preference in a PreferenceActivity screen. -->
        <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 shared preferences. -->
        <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" />
    </declare-styleable>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        <!-- Name of the author and/or source/collection of this component, e.g. 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, e.g. http://www.picasso.org. -->
        <attr name="contextUri" format="reference" />

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

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

    </declare-styleable>

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

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

    <!-- =============================== -->
    <!-- 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" (e.g. "All Friends" or
        "All connections"). Optional (Default is "All Contacts"). -->
        <attr name="allContactsName" format="string" />
    </declare-styleable>

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

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

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

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

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

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

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

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

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

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

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

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

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

    <declare-styleable name="SearchView">
        <!-- The layout to use for the search view. -->
        <attr name="layout" />
        <!-- The default state of the SearchView. If true, it will be iconified when not in
             use and expanded when clicked. -->
        <attr name="iconifiedByDefault" format="boolean" />
        <!-- An optional maximum width of the SearchView. -->
        <attr name="maxWidth" />
        <!-- An optional query hint string to be displayed in the empty query field. -->
        <attr name="queryHint" format="string" />
        <!-- Default query hint used when {@code queryHint} is undefined and
             the search view's {@code SearchableInfo} does not provide a hint.
             @hide -->
        <attr name="defaultQueryHint" format="string" />
        <!-- The IME options to set on the query text field. -->
        <attr name="imeOptions" />
        <!-- The input type to set on the query text field. -->
        <attr name="inputType" />
        <!-- Close button icon -->
        <attr name="closeIcon" format="reference" />
        <!-- Go button icon -->
        <attr name="goIcon" format="reference" />
        <!-- Search icon -->
        <attr name="searchIcon" format="reference" />
        <!-- Search icon displayed as a text field hint -->
        <attr name="searchHintIcon" format="reference" />
        <!-- Voice button icon -->
        <attr name="voiceIcon" format="reference" />
        <!-- Commit icon shown in the query suggestion row -->
        <attr name="commitIcon" format="reference" />
        <!-- Layout for query suggestion rows -->
        <attr name="suggestionRowLayout" format="reference" />
        <!-- Background for the section containing the search query -->
        <attr name="queryBackground" format="reference" />
        <!-- Background for the section containing the action (e.g. voice search) -->
        <attr name="submitBackground" format="reference" />
        <attr name="focusable" />
    </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" />
    </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 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. -->
        <attr name="settingsActivity" />
        <!-- Attribute whether the TV input service can record programs. This value can be changed
             at runtime by calling
             {@link android.media.tv.TvInputManager#updateTvInputInfo(android.media.tv.TvInputInfo)}. -->
        <attr name="canRecord" format="boolean" />
        <!-- The number of tuners that the TV input service is associated with. This value can be
             changed at runtime by calling
             {@link android.media.tv.TvInputManager#updateTvInputInfo(android.media.tv.TvInputInfo)}. -->
        <attr name="tunerCount" format="integer" />
    </declare-styleable>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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