<!DOCTYPE html>
































































































<html>
<head>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />

<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<title>R.styleable | Android Developers</title>

<!-- STYLESHEETS -->
<link rel="stylesheet"
href="//fonts.googleapis.com/css?family=Roboto+Condensed">
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
  title="roboto">
<link href="/assets/css/default.css?v=2" rel="stylesheet" type="text/css">



<!-- JAVASCRIPT -->
<script src="//www.google.com/jsapi" type="text/javascript"></script>
<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
<script type="text/javascript">
  var toRoot = "/";
  var metaTags = [];
  var devsite = false;
</script>
<script src="/assets/js/docs.js?v=2" type="text/javascript"></script>



<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-5831155-1', 'android.com');
  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
  ga('send', 'pageview');
  ga('universal.send', 'pageview'); // Send page view for new tracker.
</script>

</head>

<body class="gc-documentation google
  develop reference" itemscope itemtype="http://schema.org/Article">
  <div id="doc-api-level" class="" style="display:none"></div>
  <a name="top"></a>


<a name="top"></a>

  <!-- Header -->
  <div id="header-wrapper">
    <div id="header">




      <div class="wrap" id="header-wrap">
        <div class="col-3 logo">
          <a href="/index.html">
            <img src="/assets/images/dac_logo.png"
                srcset="/assets/images/dac_logo@2x.png 2x"
                width="123" height="25" alt="Android Developers" />
          </a>
          <div class="btn-quicknav" id="btn-quicknav">
            <a href="#" class="arrow-inactive">Quicknav</a>
            <a href="#" class="arrow-active">Quicknav</a>
          </div>
        </div>
        <ul class="nav-x col-9">
            <li class="design">
              <a href="/design/index.html"
              zh-tw-lang="設計"
              zh-cn-lang="设计"
              ru-lang="Проектирование"
              ko-lang="디자인"
              ja-lang="設計"
              es-lang="Diseñar"
              >Design</a></li>
            <li class="develop"><a href="/develop/index.html"
              zh-tw-lang="開發"
              zh-cn-lang="开发"
              ru-lang="Разработка"
              ko-lang="개발"
              ja-lang="開発"
              es-lang="Desarrollar"
              >Develop</a></li>
            <li class="distribute last"><a href="/distribute/index.html"
              zh-tw-lang="發佈"
              zh-cn-lang="分发"
              ru-lang="Распространение"
              ko-lang="배포"
              ja-lang="配布"
              es-lang="Distribuir"
              >Distribute</a></li>
        </ul>




<div class="menu-container">
  <div class="moremenu">
    <div id="more-btn"></div>
  </div>
  <div class="morehover" id="moremenu">
    <div class="top"></div>
    <div class="mid">
      <div class="header">Links</div>
      <ul>
        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
        <li><a href="/about/index.html">About Android</a></li>
      </ul>
      <div class="header">Android Sites</div>
      <ul>
        <li><a href="http://www.android.com">Android.com</a></li>
        <li class="active"><a>Android Developers</a></li>
        <li><a href="http://source.android.com">Android Open Source Project</a></li>
      </ul>

      
      
        <div class="header">Language</div>
          <div id="language" class="locales">
            <select name="language" onChange="changeLangPref(this.value, true)">
                <option value="en">English</option>
                <option value="es">Español</option>
                <option value="ja">日本語</option>
                <option value="ko">한국어</option>
                <option value="ru">Русский</option>
                <option value="zh-cn">中文 (中国)</option>
                <option value="zh-tw">中文 (台灣)</option>
            </select>
          </div>
        <script type="text/javascript">
          <!--
          loadLangPref();
            //-->
        </script>
      
      
      <br class="clearfix" />
    </div><!-- end 'mid' -->
    <div class="bottom"></div>
  </div><!-- end 'moremenu' -->

  <div class="search" id="search-container">
    <div class="search-inner">
      <div id="search-btn"></div>
      <div class="left"></div>
      <form onsubmit="return submit_search()">
        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
          onkeydown="return search_changed(event, true, '/')"
          onkeyup="return search_changed(event, false, '/')" />
      </form>
      <div class="right"></div>
      <a class="close hide">close</a>
      <div class="left"></div>
      <div class="right"></div>
    </div><!-- end search-inner -->
  </div><!-- end search-container -->

  <div class="search_filtered_wrapper reference">
    <div class="suggest-card reference no-display">
      <ul class="search_filtered">
      </ul>
    </div>
  </div>

  <div class="search_filtered_wrapper docs">
    <div class="suggest-card dummy no-display">&nbsp;</div>
    <div class="suggest-card develop no-display">
      <ul class="search_filtered">
      </ul>
      <div class="child-card guides no-display">
      </div>
      <div class="child-card training no-display">
      </div>
      <div class="child-card samples no-display">
      </div>
    </div>
    <div class="suggest-card design no-display">
      <ul class="search_filtered">
      </ul>
    </div>
    <div class="suggest-card distribute no-display">
      <ul class="search_filtered">
      </ul>
    </div>
  </div>
</div><!-- end menu-container (search and menu widget) -->



        <!-- Expanded quicknav -->
        <div id="quicknav" class="col-13">
          <ul>
            <li class="about">
              <ul>
                <li><a href="/about/index.html">About</a></li>
                <li><a href="/wear/index.html">Wear</a></li>
                <li><a href="/tv/index.html">TV</a></li>
                <li><a href="/auto/index.html">Auto</a></li>
              </ul>
            </li>
            <li class="design">
              <ul>
                <li><a href="/design/index.html">Get Started</a></li>
                <li><a href="/design/devices.html">Devices</a></li>
                <li><a href="/design/style/index.html">Style</a></li>
                <li><a href="/design/patterns/index.html">Patterns</a></li>
                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
                <li><a href="/design/downloads/index.html">Downloads</a></li>
                <li><a href="/design/videos/index.html">Videos</a></li>
              </ul>
            </li>
            <li class="develop">
              <ul>
                <li><a href="/training/index.html"
                  zh-tw-lang="訓練課程"
                  zh-cn-lang="培训"
                  ru-lang="Курсы"
                  ko-lang="교육"
                  ja-lang="トレーニング"
                  es-lang="Capacitación"
                  >Training</a></li>
                <li><a href="/guide/index.html"
                  zh-tw-lang="API 指南"
                  zh-cn-lang="API 指南"
                  ru-lang="Руководства по API"
                  ko-lang="API 가이드"
                  ja-lang="API ガイド"
                  es-lang="Guías de la API"
                  >API Guides</a></li>
                <li><a href="/reference/packages.html"
                  zh-tw-lang="參考資源"
                  zh-cn-lang="参考"
                  ru-lang="Справочник"
                  ko-lang="참조문서"
                  ja-lang="リファレンス"
                  es-lang="Referencia"
                  >Reference</a></li>
                <li><a href="/sdk/index.html"
                  zh-tw-lang="相關工具"
                  zh-cn-lang="工具"
                  ru-lang="Инструменты"
                  ko-lang="도구"
                  ja-lang="ツール"
                  es-lang="Herramientas"
                  >Tools</a>
                </li>
                <li><a href="/google/index.html">Google Services</a>
                </li>

                  <li><a href="/samples/index.html">Samples</a>
                  </li>

              </ul>
            </li>
            <li class="distribute last">
              <ul>
                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
                <li><a href="/distribute/users/index.html">Get Users</a></li>
                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
              </ul>
            </li>
          </ul>
        </div><!-- /Expanded quicknav -->
      </div><!-- end header-wrap.wrap -->
    </div><!-- end header -->

  
    <!-- Secondary x-nav -->
    <div id="nav-x">
        <div class="wrap" style="position:relative;z-index:1">


            <a id="helpoutsLink" class="resource resource-card resource-card-6x2x3 resource-card-6x2 helpouts-card"
              href="http://helpouts.google.com/partner/landing/provider/googledevelopers" target="_blank">
              <div class="card-bg helpouts-card-bg"></div>
              <div class="card-info">
                <div class="helpouts-description">
                  <div class="text">Help developers solve problems<br/>
                    <span id="helpoutsLinkText" class="link-color" style="display:block;padding-top:5px;text-align:right">Learn more</span>
                  </div>
                </div>
              </div>
            </a>
            <script>
              var textA = "LEARN MORE";
              var linkA = "http://helpouts.google.com/partner/landing/provider/googledevelopers?utm_source=android_banner1&utm_medium=banner&utm_campaign=android_provider_banner1";
              var textB = "SIGN UP NOW";
              var linkB = "http://helpouts.google.com/partner/landing/provider/googledevelopers?utm_source=android_banner2&utm_medium=banner&utm_campaign=android_provider_banner2";

              if (Math.floor(1/Math.random()) > 1) {
                $("a#helpoutsLink").attr('href', linkA);
                $("span#helpoutsLinkText").text(textA);
              } else {
                $("a#helpoutsLink").attr('href', linkB);
                $("span#helpoutsLinkText").text(textB);
              }
            </script>


            <ul class="nav-x col-9 develop" style="width:100%">
                <li class="training"><a href="/training/index.html"
                  zh-tw-lang="訓練課程"
                  zh-cn-lang="培训"
                  ru-lang="Курсы"
                  ko-lang="교육"
                  ja-lang="トレーニング"
                  es-lang="Capacitación"
                  >Training</a></li>
                <li class="guide"><a href="/guide/index.html"
                  zh-tw-lang="API 指南"
                  zh-cn-lang="API 指南"
                  ru-lang="Руководства по API"
                  ko-lang="API 가이드"
                  ja-lang="API ガイド"
                  es-lang="Guías de la API"
                  >API Guides</a></li>
                <li class="reference"><a href="/reference/packages.html"
                  zh-tw-lang="參考資源"
                  zh-cn-lang="参考"
                  ru-lang="Справочник"
                  ko-lang="참조문서"
                  ja-lang="リファレンス"
                  es-lang="Referencia"
                  >Reference</a></li>
                <li class="tools"><a href="/sdk/index.html"
                  zh-tw-lang="相關工具"
                  zh-cn-lang="工具"
                  ru-lang="Инструменты"
                  ko-lang="도구"
                  ja-lang="ツール"
                  es-lang="Herramientas"
                  >Tools</a></li>
                <li class="google"><a href="/google/index.html"
                  >Google Services</a>
                </li>
                
                  <li class="samples"><a href="/samples/index.html"
                    >Samples</a>
                  </li>
                
            </ul>
        </div>
    </div>
    <!-- /Sendondary x-nav DEVELOP -->

  

    <div id="searchResults" class="wrap" style="display:none;">
      <h2 id="searchTitle">Results</h2>
      <div id="leftSearchControl" class="search-control">Loading...</div>
    </div>
  </div> <!--end header-wrapper -->

  <div id="sticky-header">
    <div>
      <a class="logo" href="#top"></a>
      <a class="top" href="#top"></a>
      <ul class="breadcrumb">

        <li class="current">R.styleable</li>
      </ul>
    </div>
  </div>





  
  <div class="wrap clearfix" id="body-content">
    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
      <div id="devdoc-nav" class="scroll-pane">



<ul id="nav">

  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/index.html">
          <span class="en">Overview</span>
      </a></div>
  </li>

  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
          <span class="en">Games</span>
      </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
          <span class="en">Location</span>
      </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
          <span class="en">Google+</span>
                </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
          <span class="en">Maps</span>
      </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
          <span class="en">Drive</span>
      </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
          <span class="en">Cast</span>
      </a></div>
  </li>
  <li class="nav-section">
    <div class="nav-section-header"><a href="/google/play-services/ads.html">
      <span class="en">Ads</span></a>
    </div>
    <ul>
      <li><a href="/google/play-services/id.html">
          <span class="en">Advertising ID</span></a>
      </li>
    </ul>
  </li>
  <li class="nav-section">
    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
          <span class="en">Wallet</span>
      </a></div>
  </li>


  <li class="nav-section">
    <div class="nav-section-header"><a href="/google/play-services/index.html">
      <span class="en">Google Play Services</span></a>
    </div>
    <ul>
      <li><a href="/google/play-services/setup.html">
          <span class="en">Setting Up Google Play Services</span></a>
      </li>
      <li class="nav-section">
        <div class="nav-section-header"><a href="/google/auth/api-client.html">
          <span class="en">Accessing Google APIs</span></a>
        </div>
        <ul>
          <li>
            <a href="/google/auth/http-auth.html">
              <span class="en">Authorizing with Google for REST APIs</span>
            </a>
          </li>
        </ul>
      </li>
      <li id="gms-tree-list" class="nav-section">
        <div class="nav-section-header">
          <a href="/reference/gms-packages.html">
            <span class="en">Reference</span>
          </a>
        <div>
      </li>
    </ul>
  </li>


  <li class="nav-section">
    <div class="nav-section-header"><a href="/google/play/billing/index.html">
      <span class="en">Google Play In-app Billing</span></a>
    </div>
    <ul>
      <li><a href="/google/play/billing/billing_overview.html">
              <span class="en">Overview</span></a>
      </li>
      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html">
              <span class="en">Version 3 API</span></a></div>
              <ul>
              <li><a href="/google/play/billing/billing_integrate.html">
              <span class="en">Implementing the API</span></a></li>
              <li><a href="/google/play/billing/billing_reference.html">
              <span class="en">Reference</span></a></li>
              </ul>
      </li>
      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
              <span class="en">Version 2 API</span></a></div>
              <ul>
              <li><a href="/google/play/billing/v2/billing_integrate.html">
              <span class="en">Implementing the API</span></a></li>
              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
              <span class="en">Subscriptions</span></a></li>
              <li><a href="/google/play/billing/v2/billing_reference.html">
              <span class="en">Reference</span></a></li>
              </ul>
      </li>
      <li><a href="/google/play/billing/billing_subscriptions.html">
              <span class="en">Subscriptions</span></a>
      </li>
      <li><a href="/google/play/billing/billing_best_practices.html">
              <span class="en">Security and Design</span></a>
      </li>
      <li><a href="/google/play/billing/billing_testing.html">
              <span class="en">Testing In-app Billing</span></a>
      </li>
      <li><a href="/google/play/billing/billing_admin.html">
              <span class="en">Administering In-app Billing</span></a>
      </li>
      <li><a href="/google/play/billing/versions.html">
              <span class="en">Version Notes</span></a>
      </li>
    </ul>
  </li>



   <li class="nav-section">
      <div class="nav-section-header"><a href="/google/gcm/index.html">
        <span class="en">Google Cloud Messaging</span></a>
      </div>
      <ul>
        <li><a href="/google/gcm/gcm.html">
            <span class="en">Overview</span></a>
        </li>
        <li><a href="/google/gcm/gs.html">
            <span class="en">Getting Started</span></a>
        </li>
        <li><a href="/google/gcm/client.html">
            <span class="en">Implementing GCM Client</span></a>
        </li>
        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
              <span class="en">Implementing GCM Server</span></a></div>
              <ul>
              <li><a href="/google/gcm/ccs.html">
              <span class="en">CCS (XMPP)</span></a></li>
              <li><a href="/google/gcm/http.html">
              <span class="en">HTTP</span></a></li>
              </ul>
        </li>
        <li><a href="/google/gcm/notifications.html">
              <span class="en">User Notifications</span></a>
        </li>
        <li><a href="/google/gcm/adv.html">
            <span class="en">Advanced Topics</span></a>
        </li>
        <li><a href="/google/gcm/c2dm.html">
            <span class="en">Migration</span></a>
        </li>
        <li id="gcm-tree-list" class="nav-section">
          <div class="nav-section-header">
            <a href="/reference/gcm-packages.html">
              <span class="en">Reference</span>
            </a>
          <div>
        </li>
      </ul>
  </li>

  <li class="nav-section">
  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
        <span class="en">Google Cloud Save</span></a>
      </div>
  </li>

  <li class="nav-section">
    <div class="nav-section-header"><a href="/google/play/dist.html">
      <span class="en">Google Play Distribution</span></a>
    </div>
    <ul>
      <li><a href="/google/play/filters.html">
          <span class="en">Filters on Google Play</span></a>
      </li>
      <li><a href="/google/play/billing/gp-purchase-status-api.html">
              <span class="en">Google Play Developer API</span></a>
      </li>
      <li><a href="/google/play/publishing/multiple-apks.html">
          <span class="en">Multiple APK Support</span></a>
      </li>
      <li><a href="/google/play/expansion-files.html">
          <span class="en">APK Expansion Files</span></a>
      </li>
      <li class="nav-section">
        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
          <span class="en">Application Licensing</span></a>
        </div>
        <ul>
          <li><a href="/google/play/licensing/overview.html">
              <span class="en">Licensing Overview</span></a>
          </li>
          <li><a href="/google/play/licensing/setting-up.html">
              <span class="en">Setting Up for Licensing</span></a>
          </li>
          <li><a href="/google/play/licensing/adding-licensing.html">
              <span class="en">Adding Licensing to Your App</span></a>
          </li>
          <li><a href="/google/play/licensing/licensing-reference.html">
              <span class="en">Licensing Reference</span></a>
          </li>
        </ul>
      </li>

  <li class="nav-section">
    <div class="nav-section-header"><a href="/google/backup/index.html">
      Android Backup Service</a>
    </div>
    <ul>
      <li><a href="/google/backup/signup.html">
          Register</a>
      </li>
    </ul>
  </li>

  </ul>

</li>



</ul>

<script type="text/javascript">
<!--
    buildToggleLists();
    changeNavLang(getLangPref());
//-->
</script>


        

      </div>
      <script type="text/javascript">
       showGoogleRefTree();
    
      </script>
    </div> <!-- end side-nav -->
    <script>
      $(document).ready(function() {
        scrollIntoView("devdoc-nav");
        });
    </script>


     



<div class="col-12"  id="doc-col">

<div id="api-info-block">



  
   
  
  
  
  


<div class="sum-details-links">

Summary:







  <a href="#lfields">Fields</a>
  



  &#124; <a href="#pubctors">Ctors</a>
  





  &#124; <a href="#inhmethods">Inherited Methods</a>

&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>

</div><!-- end sum-details-links -->
<div class="api-level">
  
  
  

</div>
</div><!-- end api-info-block -->


<!-- ======== START OF CLASS DATA ======== -->

<div id="jd-header">
    public
    static 
    final 
    
    class
<h1 itemprop="name">R.styleable</h1>



  
    extends Object<br/>
  
  
  

  
  
  





</div><!-- end header -->

<div id="naMessage"></div>

<div id="jd-content" class="api apilevel-">
<table class="jd-inheritance-table">


    <tr>
         	
        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
    </tr>
    

    <tr>
        
            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
         	
        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.R.styleable</td>
    </tr>
    

</table>







<div class="jd-descr">






</div><!-- jd-descr -->
















<div class="jd-descr">


<h2>Summary</h2>


















<!-- =========== FIELD SUMMARY =========== -->
<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>


    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#AdsAttrs">AdsAttrs</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a AdsAttrs.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#AdsAttrs_adSize">AdsAttrs_adSize</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The size of the ad.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#AdsAttrs_adSizes">AdsAttrs_adSizes</a></td>
          <td class="jd-descrcol" width="100%">
            <p>A comma-separated list of the supported ad sizes.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#AdsAttrs_adUnitId">AdsAttrs_adUnitId</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The ad unit ID.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#AppDataSearch">AppDataSearch</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a AppDataSearch.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Corpus">Corpus</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a Corpus.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_contentProviderUri">Corpus_contentProviderUri</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The URI of the content provider that the index should crawl to get the data for this
    corpus.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_corpusId">Corpus_corpusId</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The ID of the corpus.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_corpusVersion">Corpus_corpusVersion</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The version of the corpus.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_schemaOrgType">Corpus_schemaOrgType</a></td>
          <td class="jd-descrcol" width="100%">
            <p>schema.org type of documents in this corpus.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_trimmable">Corpus_trimmable</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Indicates if documents from this corpus can be trimmed when the index reaches its quota.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#FeatureParam">FeatureParam</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a FeatureParam.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#FeatureParam_paramName">FeatureParam_paramName</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The name of this parameter.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#FeatureParam_paramValue">FeatureParam_paramValue</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The value of this parameter.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch">GlobalSearch</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a GlobalSearch.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchCorpus">GlobalSearchCorpus</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a GlobalSearchCorpus.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchCorpus_allowShortcuts">GlobalSearchCorpus_allowShortcuts</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Whether or not global search is enabled for this corpus.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchSection">GlobalSearchSection</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a GlobalSearchSection.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchSection_sectionContent">GlobalSearchSection_sectionContent</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The content of this global search section.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchSection_sectionType">GlobalSearchSection_sectionType</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The type of global search section for this mapping.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_defaultIntentAction">GlobalSearch_defaultIntentAction</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The default value for the global search section <code>default_intent_action</code>.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_defaultIntentActivity">GlobalSearch_defaultIntentActivity</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The default value for the global search section <code>default_intent_aactivity</code>.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_defaultIntentData">GlobalSearch_defaultIntentData</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The default value for the global search section <code>default_intent_data</code>.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_searchEnabled">GlobalSearch_searchEnabled</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Whether or not global search is enabled for this app.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_searchLabel">GlobalSearch_searchLabel</a></td>
          <td class="jd-descrcol" width="100%">
            <p>A localized string to identify this app's data within the global search app.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_settingsDescription">GlobalSearch_settingsDescription</a></td>
          <td class="jd-descrcol" width="100%">
            <p>A localized string to describe this apps data within the global search apps settings.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus">IMECorpus</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a IMECorpus.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_inputEnabled">IMECorpus_inputEnabled</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Whether or not this corpus could be useful input for IME.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_sourceClass">IMECorpus_sourceClass</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Class of the source.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_toAddressesSection">IMECorpus_toAddressesSection</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Sections containing entities communicated with in a given document.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_userInputSection">IMECorpus_userInputSection</a></td>
          <td class="jd-descrcol" width="100%">
            <p>If this section is non-empty, the document is considered to be input by the user if
        either <code><a href="/reference/com/google/android/gms/R.attr.html#userInputValue">userInputValue</a></code> is not set or the content of this section is equal to that
        value.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_userInputTag">IMECorpus_userInputTag</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Tag name for documents that contain data input by the user.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_userInputValue">IMECorpus_userInputValue</a></td>
          <td class="jd-descrcol" width="100%">
            <p>If set, <code><a href="/reference/com/google/android/gms/R.attr.html#userInputSection">userInputSection</a></code> contents needs to equal this value for the document
        to be considered input by user.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a MapAttrs.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraBearing">MapAttrs_cameraBearing</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#cameraBearing">cameraBearing</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraTargetLat">MapAttrs_cameraTargetLat</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#cameraTargetLat">cameraTargetLat</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraTargetLng">MapAttrs_cameraTargetLng</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#cameraTargetLng">cameraTargetLng</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraTilt">MapAttrs_cameraTilt</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#cameraTilt">cameraTilt</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraZoom">MapAttrs_cameraZoom</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#cameraZoom">cameraZoom</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_mapType">MapAttrs_mapType</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#mapType">mapType</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiCompass">MapAttrs_uiCompass</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiCompass">uiCompass</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiRotateGestures">MapAttrs_uiRotateGestures</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiRotateGestures">uiRotateGestures</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiScrollGestures">MapAttrs_uiScrollGestures</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiScrollGestures">uiScrollGestures</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiTiltGestures">MapAttrs_uiTiltGestures</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiTiltGestures">uiTiltGestures</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiZoomControls">MapAttrs_uiZoomControls</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiZoomControls">uiZoomControls</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiZoomGestures">MapAttrs_uiZoomGestures</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiZoomGestures">uiZoomGestures</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_useViewLifecycle">MapAttrs_useViewLifecycle</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#useViewLifecycle">useViewLifecycle</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_zOrderOnTop">MapAttrs_zOrderOnTop</a></td>
          <td class="jd-descrcol" width="100%">
            <p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#zOrderOnTop">zOrderOnTop</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Section">Section</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a Section.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#SectionFeature">SectionFeature</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a SectionFeature.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#SectionFeature_featureType">SectionFeature_featureType</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The type of this feature.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Section_indexPrefixes">Section_indexPrefixes</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Indicates if this section should support prefix matching.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Section_noIndex">Section_noIndex</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Indicates if this section should not be indexed.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Section_schemaOrgProperty">Section_schemaOrgProperty</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Section corresponds to this schema.org property.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Section_sectionFormat">Section_sectionFormat</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The format of the section.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Section_sectionId">Section_sectionId</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The ID of the section.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Section_sectionWeight">Section_sectionWeight</a></td>
          <td class="jd-descrcol" width="100%">
            <p>The weight of the section.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#Section_subsectionSeparator">Section_subsectionSeparator</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Subsection separator.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions">WalletFragmentOptions</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a WalletFragmentOptions.



          </td>
      </tr>

    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_appTheme">WalletFragmentOptions_appTheme</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Theme to be used for the Wallet selector


          <p>Must be one of the following constant values.



          </td>
      </tr>


      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_environment">WalletFragmentOptions_environment</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Google Wallet environment to use


          <p>Must be one of the following constant values.



          </td>
      </tr>


      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_fragmentMode">WalletFragmentOptions_fragmentMode</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Fragment mode


          <p>Must be one of the following constant values.



          </td>
      </tr>

    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_fragmentStyle">WalletFragmentOptions_fragmentStyle</a></td>
          <td class="jd-descrcol" width="100%">
            <p>A style resource specifing attributes to customize the look and feel of WalletFragment


          <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".



          </td>
      </tr>
      
    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static
          final
          int[]</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle">WalletFragmentStyle</a></td>
          <td class="jd-descrcol" width="100%">
            Attributes that can be used with a WalletFragmentStyle.



          </td>
      </tr>
      
    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonAppearance">WalletFragmentStyle_buyButtonAppearance</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Appearance of the buy button.



          </td>
      </tr>
      
    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonHeight">WalletFragmentStyle_buyButtonHeight</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Height of the buy button.



          </td>
      </tr>
      
    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonText">WalletFragmentStyle_buyButtonText</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Text on the buy button.



          </td>
      </tr>
      
    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonWidth">WalletFragmentStyle_buyButtonWidth</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Width of the buy button.



          </td>
      </tr>
      
    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsBackground">WalletFragmentStyle_maskedWalletDetailsBackground</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Masked wallet details background


          <p>May be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".



          </td>
      </tr>
      
    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsButtonBackground">WalletFragmentStyle_maskedWalletDetailsButtonBackground</a></td>
          <td class="jd-descrcol" width="100%">
            <p>"Change" button background in masked wallet details view


          <p>May be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".



          </td>
      </tr>


      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsButtonTextAppearance">WalletFragmentStyle_maskedWalletDetailsButtonTextAppearance</a></td>
          <td class="jd-descrcol" width="100%">
            <p>TextAppearance for the "Change" button in masked wallet details view


          <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".



          </td>
      </tr>
      
    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsHeaderTextAppearance">WalletFragmentStyle_maskedWalletDetailsHeaderTextAppearance</a></td>
          <td class="jd-descrcol" width="100%">
            <p>TextAppearance for headers describing masked wallet details


          <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".



          </td>
      </tr>
      
    
      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsLogoImageType">WalletFragmentStyle_maskedWalletDetailsLogoImageType</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Type of the wallet logo image in masked wallet details view


          <p>Must be one of the following constant values.



          </td>
      </tr>
      
    
      <tr class=" api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsLogoTextColor">WalletFragmentStyle_maskedWalletDetailsLogoTextColor</a></td>
          <td class="jd-descrcol" width="100%">
            <p>Color of the Google Wallet logo text in masked wallet details view


          <p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".



          </td>
      </tr>


      <tr class="alt-color api apilevel-" >
          <td class="jd-typecol"><nobr>
          public
          static

          int</nobr></td>
          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsTextAppearance">WalletFragmentStyle_maskedWalletDetailsTextAppearance</a></td>
          <td class="jd-descrcol" width="100%">
            <p>TextAppearance for masked wallet details


          <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".



          </td>
      </tr>



</table>







<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>



	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            </nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="/reference/com/google/android/gms/R.styleable.html#R.styleable()">R.styleable</a></span>()</nobr>
        
  </td></tr>



</table>











<!-- ========== METHOD SUMMARY =========== -->
<table id="inhmethods" class="jd-sumtable"><tr><th>
  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
  <div style="clear:left;">Inherited Methods</div></th></tr>


<tr class="api apilevel-" >
<td colspan="12">
  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
          ><img id="inherited-methods-java.lang.Object-trigger"
          src="/assets/images/triangle-closed.png"
          class="jd-expando-trigger-img" /></a>
From class

  java.lang.Object

<div id="inherited-methods-java.lang.Object">
  <div id="inherited-methods-java.lang.Object-list"
        class="jd-inheritedlinks">
  </div>
  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
    <table class="jd-sumtable-expando">
    


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            Object</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">clone</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            boolean</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">equals</span>(Object arg0)</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">finalize</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            Class&lt;?&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">getClass</span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">hashCode</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">notify</span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">notifyAll</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">toString</span>()</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">wait</span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
        
  </td></tr>


	 
    <tr class="alt-color api apilevel-" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            void</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad">wait</span>(long arg0)</nobr>
        
  </td></tr>


</table>
  </div>
</div>
</td></tr>


</table>


</div><!-- jd-descr (summary) -->

<!-- Details -->








<!-- XML Attributes -->


<!-- Enum Values -->


<!-- Constants -->


<!-- Fields -->


<!-- ========= FIELD DETAIL ======== -->
<h2>Fields</h2>




<A NAME="AdsAttrs"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        int[]
      </span>
        AdsAttrs
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a AdsAttrs.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#AdsAttrs_adSize">com.google.android.gms:adSize</a></code></code></td><td>
    The size of the ad.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#AdsAttrs_adSizes">com.google.android.gms:adSizes</a></code></code></td><td>
    A comma-separated list of the supported ad sizes.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#AdsAttrs_adUnitId">com.google.android.gms:adUnitId</a></code></code></td><td> The ad unit ID.</td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#AdsAttrs_adSize">AdsAttrs_adSize</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#AdsAttrs_adSizes">AdsAttrs_adSizes</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#AdsAttrs_adUnitId">AdsAttrs_adUnitId</a></code></li>
      </ul>
  </div>

    
    </div>
</div>



<A NAME="AdsAttrs_adSize"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        AdsAttrs_adSize
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The size of the ad. It must be one of BANNER, FULL_BANNER, LEADERBOARD,
    MEDIUM_RECTANGLE, SMART_BANNER, WIDE_SKYSCRAPER, or
    &lt;width&gt;x&lt;height&gt;.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="AdsAttrs_adSizes"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        AdsAttrs_adSizes
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>A comma-separated list of the supported ad sizes. The sizes must be one of
    BANNER, FULL_BANNER, LEADERBOARD, MEDIUM_RECTANGLE, SMART_BANNER,
    WIDE_SKYSCRAPER, or &lt;width&gt;x&lt;height&gt;.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>


    </div>
</div>



<A NAME="AdsAttrs_adUnitId"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        AdsAttrs_adUnitId
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The ad unit ID.


          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="AppDataSearch"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        int[]
      </span>
        AppDataSearch
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a AppDataSearch.
</p></div>

    
    </div>
</div>



<A NAME="Corpus"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        int[]
      </span>
        Corpus
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a Corpus.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_contentProviderUri">com.google.android.gms:contentProviderUri</a></code></code></td><td>
    The URI of the content provider that the index should crawl to get the data for this
    corpus.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_corpusId">com.google.android.gms:corpusId</a></code></code></td><td> The ID of the corpus.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_corpusVersion">com.google.android.gms:corpusVersion</a></code></code></td><td>
      The version of the corpus.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_schemaOrgType">com.google.android.gms:schemaOrgType</a></code></code></td><td> schema.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_trimmable">com.google.android.gms:trimmable</a></code></code></td><td>
      Indicates if documents from this corpus can be trimmed when the index reaches its quota.</td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_contentProviderUri">Corpus_contentProviderUri</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_corpusId">Corpus_corpusId</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_corpusVersion">Corpus_corpusVersion</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_schemaOrgType">Corpus_schemaOrgType</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Corpus_trimmable">Corpus_trimmable</a></code></li>
      </ul>
  </div>

    
    </div>
</div>



<A NAME="Corpus_contentProviderUri"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Corpus_contentProviderUri
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The URI of the content provider that the index should crawl to get the data for this
    corpus. Required. This string must not change between configurations.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Corpus_corpusId"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Corpus_corpusId
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The ID of the corpus. Required. This string must not change between configurations.


          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Corpus_corpusVersion"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Corpus_corpusVersion
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The version of the corpus. Optional; defaults to <code>"0"</code>. This string must not change
      between configurations.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Corpus_schemaOrgType"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Corpus_schemaOrgType
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>schema.org type of documents in this corpus. Optional.


          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Corpus_trimmable"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Corpus_trimmable
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Indicates if documents from this corpus can be trimmed when the index reaches its quota.
      Optional; defaults to <code>true</code>.



          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="FeatureParam"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        int[]
      </span>
        FeatureParam
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a FeatureParam.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#FeatureParam_paramName">com.google.android.gms:paramName</a></code></code></td><td> The name of this parameter.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#FeatureParam_paramValue">com.google.android.gms:paramValue</a></code></code></td><td> The value of this parameter.</td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#FeatureParam_paramName">FeatureParam_paramName</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#FeatureParam_paramValue">FeatureParam_paramValue</a></code></li>
      </ul>
  </div>

    
    </div>
</div>



<A NAME="FeatureParam_paramName"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        FeatureParam_paramName
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The name of this parameter. Required.


          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="FeatureParam_paramValue"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        FeatureParam_paramValue
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The value of this parameter. Optional.


          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="GlobalSearch"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        int[]
      </span>
        GlobalSearch
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a GlobalSearch.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_defaultIntentAction">com.google.android.gms:defaultIntentAction</a></code></code></td><td>
      The default value for the global search section <code>default_intent_action</code>.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_defaultIntentActivity">com.google.android.gms:defaultIntentActivity</a></code></code></td><td>
      The default value for the global search section <code>default_intent_aactivity</code>.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_defaultIntentData">com.google.android.gms:defaultIntentData</a></code></code></td><td>
      The default value for the global search section <code>default_intent_data</code>.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_searchEnabled">com.google.android.gms:searchEnabled</a></code></code></td><td>
      Whether or not global search is enabled for this app.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_searchLabel">com.google.android.gms:searchLabel</a></code></code></td><td> A localized string to identify this app's data within the global search app.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_settingsDescription">com.google.android.gms:settingsDescription</a></code></code></td><td>
      A localized string to describe this apps data within the global search apps settings.</td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_defaultIntentAction">GlobalSearch_defaultIntentAction</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_defaultIntentActivity">GlobalSearch_defaultIntentActivity</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_defaultIntentData">GlobalSearch_defaultIntentData</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_searchEnabled">GlobalSearch_searchEnabled</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_searchLabel">GlobalSearch_searchLabel</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearch_settingsDescription">GlobalSearch_settingsDescription</a></code></li>
      </ul>
  </div>

    
    </div>
</div>



<A NAME="GlobalSearchCorpus"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        int[]
      </span>
        GlobalSearchCorpus
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a GlobalSearchCorpus.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchCorpus_allowShortcuts">com.google.android.gms:allowShortcuts</a></code></code></td><td>
      Whether or not global search is enabled for this corpus.</td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchCorpus_allowShortcuts">GlobalSearchCorpus_allowShortcuts</a></code></li>
      </ul>
  </div>


    </div>
</div>



<A NAME="GlobalSearchCorpus_allowShortcuts"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        GlobalSearchCorpus_allowShortcuts
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>Whether or not global search is enabled for this corpus. Optional; defaults to
      <code>true</code>. If set to <code>false</code>, it will be treated as if the <code>GlobalSearchCorpus</code>
      element did not exist.


      Allow shortcuts to global search results from this corpus to be created. If set to
      <code>true</code>, the global search app may allow the user to create shortcuts to results, for
      example on the users home screen. The shortcuts may be long lived, and may persist after the
      linked document has been deleted. The activity that handles the global search result intent
      should be able to deal with this gracefully. Defaults to <code>false</code>.



          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="GlobalSearchSection"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        int[]
      </span>
        GlobalSearchSection
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a GlobalSearchSection.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchSection_sectionContent">com.google.android.gms:sectionContent</a></code></code></td><td>
      The content of this global search section.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchSection_sectionType">com.google.android.gms:sectionType</a></code></code></td><td> The type of global search section for this mapping.</td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchSection_sectionContent">GlobalSearchSection_sectionContent</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#GlobalSearchSection_sectionType">GlobalSearchSection_sectionType</a></code></li>
      </ul>
  </div>

    
    </div>
</div>



<A NAME="GlobalSearchSection_sectionContent"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        GlobalSearchSection_sectionContent
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The content of this global search section. This is a global search section template string.
      It should contain a reference to a string which can change between configurations.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="GlobalSearchSection_sectionType"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        GlobalSearchSection_sectionType
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The type of global search section for this mapping.


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>text1</code></td><td>0</td><td></td></tr>
<tr><td><code>text2</code></td><td>1</td><td></td></tr>
<tr><td><code>icon_uri</code></td><td>2</td><td></td></tr>
<tr><td><code>intent_action</code></td><td>3</td><td></td></tr>
<tr><td><code>intent_data</code></td><td>4</td><td></td></tr>
<tr><td><code>intent_data_id</code></td><td>5</td><td></td></tr>
<tr><td><code>intent_extra_data</code></td><td>6</td><td></td></tr>
<tr><td><code>large_icon_uri</code></td><td>7</td><td></td></tr>
<tr><td><code>intent_activity</code></td><td>8</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="GlobalSearch_defaultIntentAction"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        GlobalSearch_defaultIntentAction
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The default value for the global search section <code>default_intent_action</code>. Optional.
      This string must not change between configurations.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="GlobalSearch_defaultIntentActivity"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        GlobalSearch_defaultIntentActivity
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The default value for the global search section <code>default_intent_aactivity</code>. Optional.
      This string must not change between configurations.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="GlobalSearch_defaultIntentData"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        GlobalSearch_defaultIntentData
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The default value for the global search section <code>default_intent_data</code>. Optional.
      This string must not change between configurations.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="GlobalSearch_searchEnabled"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        GlobalSearch_searchEnabled
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Whether or not global search is enabled for this app. Optional; defaults to <code>true</code>.
      If set to <code>false</code>, it will be treated as if the <code>GlobalSearch</code> element did not
      exist.



          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="GlobalSearch_searchLabel"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        GlobalSearch_searchLabel
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>A localized string to identify this app's data within the global search app. Required.


          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="GlobalSearch_settingsDescription"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        GlobalSearch_settingsDescription
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>A localized string to describe this apps data within the global search apps settings.
      Optional.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="IMECorpus"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        int[]
      </span>
        IMECorpus
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a IMECorpus.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_inputEnabled">com.google.android.gms:inputEnabled</a></code></code></td><td>
        Whether or not this corpus could be useful input for IME.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_sourceClass">com.google.android.gms:sourceClass</a></code></code></td><td> Class of the source.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_toAddressesSection">com.google.android.gms:toAddressesSection</a></code></code></td><td>
        Sections containing entities communicated with in a given document.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_userInputSection">com.google.android.gms:userInputSection</a></code></code></td><td>
        If this section is non-empty, the document is considered to be input by the user if
        either <code><a href="/reference/com/google/android/gms/R.attr.html#userInputValue">userInputValue</a></code> is not set or the content of this section is equal to that
        value.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_userInputTag">com.google.android.gms:userInputTag</a></code></code></td><td> Tag name for documents that contain data input by the user.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_userInputValue">com.google.android.gms:userInputValue</a></code></code></td><td>
        If set, <code><a href="/reference/com/google/android/gms/R.attr.html#userInputSection">userInputSection</a></code> contents needs to equal this value for the document
        to be considered input by user.</td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_inputEnabled">IMECorpus_inputEnabled</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_sourceClass">IMECorpus_sourceClass</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_toAddressesSection">IMECorpus_toAddressesSection</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_userInputSection">IMECorpus_userInputSection</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_userInputTag">IMECorpus_userInputTag</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#IMECorpus_userInputValue">IMECorpus_userInputValue</a></code></li>
      </ul>
  </div>


    </div>
</div>



<A NAME="IMECorpus_inputEnabled"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        IMECorpus_inputEnabled
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>Whether or not this corpus could be useful input for IME. Optional; defaults to
        <code>true</code>. If set to <code>false</code>, it will be treated as if the <code>IMECorpus</code>
        element did not exist.



          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="IMECorpus_sourceClass"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        IMECorpus_sourceClass
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Class of the source. One of the following: email, contact, and instant-message.


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>email</code></td><td>0</td><td></td></tr>
<tr><td><code>contact</code></td><td>1</td><td></td></tr>
<tr><td><code>instant_message</code></td><td>2</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="IMECorpus_toAddressesSection"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        IMECorpus_toAddressesSection
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>Sections containing entities communicated with in a given document.
        Entities can be names, email addresses or phone numbers.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>


    </div>
</div>



<A NAME="IMECorpus_userInputSection"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        IMECorpus_userInputSection
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>If this section is non-empty, the document is considered to be input by the user if
        either <code><a href="/reference/com/google/android/gms/R.attr.html#userInputValue">userInputValue</a></code> is not set or the content of this section is equal to that
        value.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>


    </div>
</div>



<A NAME="IMECorpus_userInputTag"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        IMECorpus_userInputTag
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>Tag name for documents that contain data input by the user. Optional.


          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>


    </div>
</div>



<A NAME="IMECorpus_userInputValue"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        IMECorpus_userInputValue
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>If set, <code><a href="/reference/com/google/android/gms/R.attr.html#userInputSection">userInputSection</a></code> contents needs to equal this value for the document
        to be considered input by user.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>


    </div>
</div>



<A NAME="MapAttrs"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static
        final
        int[]
      </span>
        MapAttrs
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a MapAttrs.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraBearing">com.google.android.gms:cameraBearing</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraTargetLat">com.google.android.gms:cameraTargetLat</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraTargetLng">com.google.android.gms:cameraTargetLng</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraTilt">com.google.android.gms:cameraTilt</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraZoom">com.google.android.gms:cameraZoom</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_mapType">com.google.android.gms:mapType</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiCompass">com.google.android.gms:uiCompass</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiRotateGestures">com.google.android.gms:uiRotateGestures</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiScrollGestures">com.google.android.gms:uiScrollGestures</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiTiltGestures">com.google.android.gms:uiTiltGestures</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiZoomControls">com.google.android.gms:uiZoomControls</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiZoomGestures">com.google.android.gms:uiZoomGestures</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_useViewLifecycle">com.google.android.gms:useViewLifecycle</a></code></code></td><td></td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_zOrderOnTop">com.google.android.gms:zOrderOnTop</a></code></code></td><td></td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraBearing">MapAttrs_cameraBearing</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraTargetLat">MapAttrs_cameraTargetLat</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraTargetLng">MapAttrs_cameraTargetLng</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraTilt">MapAttrs_cameraTilt</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_cameraZoom">MapAttrs_cameraZoom</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_mapType">MapAttrs_mapType</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiCompass">MapAttrs_uiCompass</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiRotateGestures">MapAttrs_uiRotateGestures</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiScrollGestures">MapAttrs_uiScrollGestures</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiTiltGestures">MapAttrs_uiTiltGestures</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiZoomControls">MapAttrs_uiZoomControls</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_uiZoomGestures">MapAttrs_uiZoomGestures</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_useViewLifecycle">MapAttrs_useViewLifecycle</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs_zOrderOnTop">MapAttrs_zOrderOnTop</a></code></li>
      </ul>
  </div>


    </div>
</div>



<A NAME="MapAttrs_cameraBearing"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_cameraBearing
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#cameraBearing">cameraBearing</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a floating point value, such as "<code>1.2</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_cameraTargetLat"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_cameraTargetLat
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#cameraTargetLat">cameraTargetLat</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a floating point value, such as "<code>1.2</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_cameraTargetLng"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_cameraTargetLng
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#cameraTargetLng">cameraTargetLng</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a floating point value, such as "<code>1.2</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_cameraTilt"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_cameraTilt
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#cameraTilt">cameraTilt</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a floating point value, such as "<code>1.2</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_cameraZoom"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_cameraZoom
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#cameraZoom">cameraZoom</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a floating point value, such as "<code>1.2</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_mapType"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_mapType
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#mapType">mapType</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>none</code></td><td>0</td><td></td></tr>
<tr><td><code>normal</code></td><td>1</td><td></td></tr>
<tr><td><code>satellite</code></td><td>2</td><td></td></tr>
<tr><td><code>terrain</code></td><td>3</td><td></td></tr>
<tr><td><code>hybrid</code></td><td>4</td><td></td></tr>
</table></p></div>


    </div>
</div>



<A NAME="MapAttrs_uiCompass"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_uiCompass
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiCompass">uiCompass</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_uiRotateGestures"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_uiRotateGestures
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiRotateGestures">uiRotateGestures</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_uiScrollGestures"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_uiScrollGestures
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiScrollGestures">uiScrollGestures</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_uiTiltGestures"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_uiTiltGestures
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiTiltGestures">uiTiltGestures</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_uiZoomControls"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_uiZoomControls
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiZoomControls">uiZoomControls</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_uiZoomGestures"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_uiZoomGestures
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#uiZoomGestures">uiZoomGestures</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_useViewLifecycle"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_useViewLifecycle
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#useViewLifecycle">useViewLifecycle</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="MapAttrs_zOrderOnTop"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        MapAttrs_zOrderOnTop
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>This symbol is the offset where the <code><a href="/reference/com/google/android/gms/R.attr.html#zOrderOnTop">zOrderOnTop</a></code>
          attribute's value can be found in the <code><a href="/reference/com/google/android/gms/R.styleable.html#MapAttrs">MapAttrs</a></code> array.


          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.</p></div>


    </div>
</div>



<A NAME="Section"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static
        final
        int[]
      </span>
        Section
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a Section.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_indexPrefixes">com.google.android.gms:indexPrefixes</a></code></code></td><td>
      Indicates if this section should support prefix matching.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_noIndex">com.google.android.gms:noIndex</a></code></code></td><td> Indicates if this section should not be indexed.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_schemaOrgProperty">com.google.android.gms:schemaOrgProperty</a></code></code></td><td> Section corresponds to this schema.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_sectionFormat">com.google.android.gms:sectionFormat</a></code></code></td><td> The format of the section.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_sectionId">com.google.android.gms:sectionId</a></code></code></td><td> The ID of the section.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_sectionWeight">com.google.android.gms:sectionWeight</a></code></code></td><td> The weight of the section.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_subsectionSeparator">com.google.android.gms:subsectionSeparator</a></code></code></td><td>
      Subsection separator.</td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_indexPrefixes">Section_indexPrefixes</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_noIndex">Section_noIndex</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_schemaOrgProperty">Section_schemaOrgProperty</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_sectionFormat">Section_sectionFormat</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_sectionId">Section_sectionId</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_sectionWeight">Section_sectionWeight</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#Section_subsectionSeparator">Section_subsectionSeparator</a></code></li>
      </ul>
  </div>


    </div>
</div>



<A NAME="SectionFeature"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static
        final
        int[]
      </span>
        SectionFeature
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a SectionFeature.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#SectionFeature_featureType">com.google.android.gms:featureType</a></code></code></td><td> The type of this feature.</td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#SectionFeature_featureType">SectionFeature_featureType</a></code></li>
      </ul>
  </div>


    </div>
</div>



<A NAME="SectionFeature_featureType"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        SectionFeature_featureType
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>The type of this feature. Required.


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>match_global_nicknames</code></td><td>1</td><td> Enable global nickname matching on this section </td></tr>
<tr><td><code>demote_common_words</code></td><td>2</td><td> Demote common words by a factor in this section </td></tr>
<tr><td><code>demote_rfc822_hostnames</code></td><td>3</td><td>
            Demote RFC822 hostnames by a factor in this section. Only applicable to RFC822
            sections
            </td></tr>
<tr><td><code>omnibox_url_section</code></td><td>4</td><td>
            Mark this is an omnibox url section. May enable special ranking and matching
            behavior. Only application to url sections.
            </td></tr>
<tr><td><code>omnibox_title_section</code></td><td>5</td><td>
            Mark this is an omnibox title section. May enable special ranking and matching
            behavior.
            </td></tr>
</table>
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Section_indexPrefixes"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Section_indexPrefixes
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Indicates if this section should support prefix matching. Optional; defaults to
      <code>false</code>.



          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Section_noIndex"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Section_noIndex
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Indicates if this section should not be indexed. Optional; defaults to <code>false</code>.


          <p>Must be a boolean value, either "<code>true</code>" or "<code>false</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Section_schemaOrgProperty"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Section_schemaOrgProperty
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Section corresponds to this schema.org property. Optional.


          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Section_sectionFormat"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Section_sectionFormat
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The format of the section. Optional; default to <code>plain</code>.


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>plain</code></td><td>0</td><td></td></tr>
<tr><td><code>html</code></td><td>1</td><td></td></tr>
<tr><td><code>rfc822</code></td><td>2</td><td></td></tr>
<tr><td><code>url</code></td><td>3</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Section_sectionId"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Section_sectionId
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The ID of the section. Required. This string must not change between configurations.


          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Section_sectionWeight"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Section_sectionWeight
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>The weight of the section. Optional; defaults to 1.


          <p>Must be an integer value, such as "<code>100</code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="Section_subsectionSeparator"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        Section_subsectionSeparator
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Subsection separator. Optional. If not provided, the section is not split into
      subsections.



          <p>Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentOptions"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        int[]
      </span>
        WalletFragmentOptions
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a WalletFragmentOptions.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_appTheme">com.google.android.gms:appTheme</a></code></code></td><td> Theme to be used for the Wallet selector </td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_environment">com.google.android.gms:environment</a></code></code></td><td> Google Wallet environment to use </td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_fragmentMode">com.google.android.gms:fragmentMode</a></code></code></td><td> Fragment mode </td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_fragmentStyle">com.google.android.gms:fragmentStyle</a></code></code></td><td> A style resource specifing attributes to customize the look and feel of WalletFragment </td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_appTheme">WalletFragmentOptions_appTheme</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_environment">WalletFragmentOptions_environment</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_fragmentMode">WalletFragmentOptions_fragmentMode</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentOptions_fragmentStyle">WalletFragmentOptions_fragmentStyle</a></code></li>
      </ul>
  </div>

    
    </div>
</div>



<A NAME="WalletFragmentOptions_appTheme"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        WalletFragmentOptions_appTheme
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Theme to be used for the Wallet selector


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>holo_dark</code></td><td>0</td><td></td></tr>
<tr><td><code>holo_light</code></td><td>1</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentOptions_environment"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        WalletFragmentOptions_environment
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Google Wallet environment to use


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>production</code></td><td>1</td><td></td></tr>
<tr><td><code>sandbox</code></td><td>0</td><td></td></tr>
<tr><td><code>strict_sandbox</code></td><td>2</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>


    </div>
</div>



<A NAME="WalletFragmentOptions_fragmentMode"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        WalletFragmentOptions_fragmentMode
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>Fragment mode


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>buyButton</code></td><td>1</td><td></td></tr>
<tr><td><code>selectionDetails</code></td><td>2</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentOptions_fragmentStyle"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        WalletFragmentOptions_fragmentStyle
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>A style resource specifing attributes to customize the look and feel of WalletFragment


          <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentStyle"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
        final 
        int[]
      </span>
        WalletFragmentStyle
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p>Attributes that can be used with a WalletFragmentStyle.
           <p>Includes the following attributes:</p>
           <table>
           <colgroup align="left" />
           <colgroup align="left" />
           <tr><th>Attribute</th><th>Description</th></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonAppearance">com.google.android.gms:buyButtonAppearance</a></code></code></td><td> Appearance of the buy button.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonHeight">com.google.android.gms:buyButtonHeight</a></code></code></td><td>
             Height of the buy button.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonText">com.google.android.gms:buyButtonText</a></code></code></td><td> Text on the buy button.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonWidth">com.google.android.gms:buyButtonWidth</a></code></code></td><td>
             Width of the buy button.</td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsBackground">com.google.android.gms:maskedWalletDetailsBackground</a></code></code></td><td> Masked wallet details background </td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsButtonBackground">com.google.android.gms:maskedWalletDetailsButtonBackground</a></code></code></td><td> "Change" button background in masked wallet details view </td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsButtonTextAppearance">com.google.android.gms:maskedWalletDetailsButtonTextAppearance</a></code></code></td><td> TextAppearance for the "Change" button in masked wallet details view </td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsHeaderTextAppearance">com.google.android.gms:maskedWalletDetailsHeaderTextAppearance</a></code></code></td><td> TextAppearance for headers describing masked wallet details </td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsLogoImageType">com.google.android.gms:maskedWalletDetailsLogoImageType</a></code></code></td><td> Type of the wallet logo image in masked wallet details view </td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsLogoTextColor">com.google.android.gms:maskedWalletDetailsLogoTextColor</a></code></code></td><td> Color of the Google Wallet logo text in masked wallet details view </td></tr>
           <tr><td><code><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsTextAppearance">com.google.android.gms:maskedWalletDetailsTextAppearance</a></code></code></td><td> TextAppearance for masked wallet details </td></tr>
           </table></p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">See Also</h5>
      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonAppearance">WalletFragmentStyle_buyButtonAppearance</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonHeight">WalletFragmentStyle_buyButtonHeight</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonText">WalletFragmentStyle_buyButtonText</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_buyButtonWidth">WalletFragmentStyle_buyButtonWidth</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsBackground">WalletFragmentStyle_maskedWalletDetailsBackground</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsButtonBackground">WalletFragmentStyle_maskedWalletDetailsButtonBackground</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsButtonTextAppearance">WalletFragmentStyle_maskedWalletDetailsButtonTextAppearance</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsHeaderTextAppearance">WalletFragmentStyle_maskedWalletDetailsHeaderTextAppearance</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsLogoImageType">WalletFragmentStyle_maskedWalletDetailsLogoImageType</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsLogoTextColor">WalletFragmentStyle_maskedWalletDetailsLogoTextColor</a></code></li><li><code><a href="/reference/com/google/android/gms/R.styleable.html#WalletFragmentStyle_maskedWalletDetailsTextAppearance">WalletFragmentStyle_maskedWalletDetailsTextAppearance</a></code></li>
      </ul>
  </div>

    
    </div>
</div>



<A NAME="WalletFragmentStyle_buyButtonAppearance"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        WalletFragmentStyle_buyButtonAppearance
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Appearance of the buy button. Must be one of "classic", "grayscale" and "monochrome"


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>classic</code></td><td>1</td><td></td></tr>
<tr><td><code>grayscale</code></td><td>2</td><td></td></tr>
<tr><td><code>monochrome</code></td><td>3</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentStyle_buyButtonHeight"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        WalletFragmentStyle_buyButtonHeight
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Height of the buy button. This includes an 8dp padding (4dp on each side) used for
             pressed and focused states of the button. The value can be a specific height, e.g.
             "48dp", or special values "match_parent" and "wrap_content".



          <p>May be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
<p>May be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>match_parent</code></td><td>-1</td><td></td></tr>
<tr><td><code>wrap_content</code></td><td>-2</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentStyle_buyButtonText"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        WalletFragmentStyle_buyButtonText
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Text on the buy button. Must be one of "buy_with_google", "buy_now" and "book_now"


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>buy_with_google</code></td><td>1</td><td></td></tr>
<tr><td><code>buy_now</code></td><td>2</td><td></td></tr>
<tr><td><code>book_now</code></td><td>3</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentStyle_buyButtonWidth"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        WalletFragmentStyle_buyButtonWidth
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Width of the buy button. This includes an 8dp padding (4dp on each side) used for
             pressed and focused states of the button. The value can be a specific width, e.g.
             "300dp", or special values "match_parent" and "wrap_content".



          <p>May be a dimension value, which is a floating point number appended with a unit such as "<code>14.5sp</code>".
Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
in (inches), mm (millimeters).
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
<p>May be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>match_parent</code></td><td>-1</td><td></td></tr>
<tr><td><code>wrap_content</code></td><td>-2</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>


    </div>
</div>



<A NAME="WalletFragmentStyle_maskedWalletDetailsBackground"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        WalletFragmentStyle_maskedWalletDetailsBackground
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>Masked wallet details background


          <p>May be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
<p>May be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentStyle_maskedWalletDetailsButtonBackground"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        WalletFragmentStyle_maskedWalletDetailsButtonBackground
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>"Change" button background in masked wallet details view


          <p>May be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
<p>May be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
          <p>This is a private symbol.</p></div>


    </div>
</div>



<A NAME="WalletFragmentStyle_maskedWalletDetailsButtonTextAppearance"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        WalletFragmentStyle_maskedWalletDetailsButtonTextAppearance
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>TextAppearance for the "Change" button in masked wallet details view


          <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentStyle_maskedWalletDetailsHeaderTextAppearance"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        WalletFragmentStyle_maskedWalletDetailsHeaderTextAppearance
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>TextAppearance for headers describing masked wallet details


          <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentStyle_maskedWalletDetailsLogoImageType"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 

        int
      </span>
        WalletFragmentStyle_maskedWalletDetailsLogoImageType
    </h4>
      <div class="api-level">
        
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p><p>Type of the wallet logo image in masked wallet details view


          <p>Must be one of the following constant values.</p>
<table>
<colgroup align="left" />
<colgroup align="left" />
<colgroup align="left" />
<tr><th>Constant</th><th>Value</th><th>Description</th></tr>
<tr><td><code>classic</code></td><td>1</td><td></td></tr>
<tr><td><code>monochrome</code></td><td>2</td><td></td></tr>
</table>
          <p>This is a private symbol.</p></div>

    
    </div>
</div>



<A NAME="WalletFragmentStyle_maskedWalletDetailsLogoTextColor"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        WalletFragmentStyle_maskedWalletDetailsLogoTextColor
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>Color of the Google Wallet logo text in masked wallet details view


          <p>Must be a color value, in the form of "<code>#<i>rgb</i></code>", "<code>#<i>argb</i></code>",
"<code>#<i>rrggbb</i></code>", or "<code>#<i>aarrggbb</i></code>".
<p>This may also be a reference to a resource (in the form
"<code>@[<i>package</i>:]<i>type</i>:<i>name</i></code>") or
theme attribute (in the form
"<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>")
containing a value of this type.
          <p>This is a private symbol.</p></div>


    </div>
</div>



<A NAME="WalletFragmentStyle_maskedWalletDetailsTextAppearance"></A>

<div class="jd-details api apilevel-">
    <h4 class="jd-details-title">
      <span class="normal">
        public
        static

        int
      </span>
        WalletFragmentStyle_maskedWalletDetailsTextAppearance
    </h4>
      <div class="api-level">




      </div>
    <div class="jd-details-descr">




  <div class="jd-tagdata jd-tagdescr"><p><p>TextAppearance for masked wallet details


          <p>Must be a reference to another resource, in the form "<code>@[+][<i>package</i>:]<i>type</i>:<i>name</i></code>"
or to a theme attribute in the form "<code>?[<i>package</i>:][<i>type</i>:]<i>name</i></code>".
          <p>This is a private symbol.</p></div>


    </div>
</div>




<!-- Public ctors -->


<!-- ========= CONSTRUCTOR DETAIL ======== -->
<h2>Public Constructors</h2>



<A NAME="R.styleable()"></A>

<div class="jd-details api apilevel-"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        
      </span>
      <span class="sympad">R.styleable</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div></div>
        
  

      </div>
    <div class="jd-details-descr">
      



  <div class="jd-tagdata jd-tagdescr"><p></p></div>

    </div>
</div>





<!-- ========= CONSTRUCTOR DETAIL ======== -->
<!-- Protected ctors -->



<!-- ========= METHOD DETAIL ======== -->
<!-- Public methdos -->



<!-- ========= METHOD DETAIL ======== -->



<!-- ========= END OF CLASS DATA ========= -->
<A NAME="navbar_top"></A>

<div id="footer" class="wrap" >
        

  <div id="copyright">
    
  Except as noted, this content is licensed under <a
  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>. 
  For details and restrictions, see the <a href="/license.html">
  Content License</a>.
  </div>
  <div id="build_info">
    
<script src="/timestamp.js" type="text/javascript"></script>
<script>document.write(BUILD_TIMESTAMP)</script>

  </div>


  <div id="footerlinks">
    
  <p>
    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
    <a href="/support.html">Support</a>
  </p>
  </div>

</div> <!-- end footer -->
</div> <!-- jd-content -->

</div><!-- end doc-content -->

</div> <!-- end body-content --> 






</body>
</html>
