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

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

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

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

        <!-- Reference to the Pointer style -->
        <attr name="pointerStyle" format="reference" />

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

        <!-- 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" />
    </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 Whether fullDark, etc. should use default values if null. -->
        <attr name="needsDefaultBackgrounds" format="boolean" />
    </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" />
    </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>

    </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.  -->
        <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" />
    </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.  -->
        <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" />
    </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#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" />
        <!-- Short description of the accessibility serivce 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>

    <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 fale, 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>
    <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" />
    </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" />
    </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 button graphic. -->
        <attr name="thumbTint" format="color" />
        <!-- Blending mode used to apply the button graphic 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>
    </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. -->
        <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" />


        <!-- 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>
        <!-- Placeholder for a deleted attribute. This should be removed before M release. -->
        <attr name="__removeBeforeMRelease_leftIndents" format="reference" />
        <!-- Placeholder for a deleted attribute. This should be removed before M release. -->
        <attr name="__removeBeforeMRelease_rightIndents" format="reference" />
    </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" />
    </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 minimal 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 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>

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

    <!-- Drawable states.
         The mapping of Drawable states to a particular drawables is specified
         in the "state" elements of a Widget's "selector" element.
         Possible values:
         <ul>
         <li>"state_focused"
         <li>"state_window_focused"
         <li>"state_enabled"
         <li>"state_checked"
         <li>"state_selected"
         <li>"state_active"
         <li>"state_single"
         <li>"state_first"
         <li>"state_mid"
         <li>"state_last"
         <li>"state_only"
         <li>"state_pressed"
         <li>"state_activated"
         <li>"state_error"
         <li>"state_circle"
         <li>"state_rect"
         <li>"state_grow"
         <li>"state_move"
         <li>"state_hovered"
         <li>"state_drag_can_accept"
         <li>"state_drag_hovered"
         <li>"state_accessibility_focused"
         </ul>  -->
    <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}.-->
        <attr name="state_active" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.-->
        <attr name="state_single" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.-->
        <attr name="state_first" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.-->
        <attr name="state_middle" format="boolean" />
        <!-- State value for {@link android.graphics.drawable.StateListDrawable StateListDrawable}.-->
        <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 a the wallpaper's thumbnail bitmap. -->
        <attr name="thumbnail" format="reference" />

        <!-- Name of the author of this component, e.g. Google. -->
        <attr name="author" format="reference" />

        <!-- Short description of the component's purpose or behavior. -->
        <attr name="description" />
    </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" />
    </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" />
        <!-- 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" />
    </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" />
    </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" />
    </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" />
        <attr name="titleMargins" format="dimension" />
        <attr name="titleMarginStart" format="dimension" />
        <attr name="titleMarginEnd" format="dimension" />
        <attr name="titleMarginTop" format="dimension" />
        <attr name="titleMarginBottom" format="dimension" />
        <attr name="contentInsetStart" />
        <attr name="contentInsetEnd" />
        <attr name="contentInsetLeft" />
        <attr name="contentInsetRight" />
        <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 for setup of this service.
             The setup includes scanning channels and registering EPG data. -->
        <attr name="setupActivity" format="string" />
        <!-- Component name of an activity that allows the user to modify
             the settings for this service. -->
        <attr name="settingsActivity" />
    </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="ResolverDrawerLayout_LayoutParams">
        <attr name="layout_alwaysShow" format="boolean" />
        <attr name="layout_ignoreOffset" format="boolean" />
        <attr name="layout_gravity" />
    </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>
</resources>
