<!--
  Copyright 2013 The Android Open Source Project

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  -->

<resources>
    <string name="app_name">Borderless Buttons</string>
    <string name="intro_message">This sample demonstrates the use of <b>borderless buttons</b>, <b>bottom button bars</b> (<i>OK</i> and <i>Cancel</i>) and <b>dividers</b> to establish visual structure.</string>

    <string name="cancel">Cancel</string>
    <string name="ok">OK</string>

    <string name="dummy_title">Dummy title</string>
    <string name="dummy_subtitle">Dummy subtitle</string>

    <string name="delete_content_description">Delete</string>

    <string name="touched_primary_message">Touched primary list item target.</string>
    <string name="touched_secondary_message">Touched secondary list item target (delete).</string>

    <string name="docs_link_title">Design docs: borderless buttons</string>
</resources>
