<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 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">GridViewPager Sample</string>
    <string name="welcome_title">GridViewPager</string>
    <string name="welcome_text">Welcome!</string>

    <string name="about_title">About</string>
    <string name="about_text">Content is organized into multiple pages. Swipe
        between cards to view other content.</string>

    <string name="cards_title">Cards</string>
    <string name="cards_text">Each page is created using a CardFragment. A
        layout is placed inside the card and the rest is handled
        automatically.</string>

    <string name="expansion_title">Expansion</string>
    <string name="expansion_text">By default, each card will grow taller to
        accommodate extra content. Tall cards can be scrolled through
        like any scrollable view. The maximum height is controlled by
        setExpansionFactor() with a default of 10 pages. After that
        you\'ll notice a faded edge to indicate there is more. Expansion
        can be disabled completely using setExpansionEnabled(false).
        With this, the content will be clipped if it\'s taller than one
        page.</string>

    <string name="backgrounds_title">Backgrounds</string>
    <string name="backgrounds_text">Backgrounds are supplied by the adapter\'s
        getBackground method. Parallax and crossfade effects are applied
        automatically.</string>

    <string name="columns_title">Columns</string>
    <string name="columns_text">When moving between rows, the pager always
        returns to column 0. This is adjustable in the adapter. See
        method getCurrentColumnForRow().</string>

    <string name="dismiss_title">Dismiss</string>
    <string name="dismiss_text">To exit the application, swipe from left to
        right.</string>

</resources>
