ThemedSpinnerAdapter.java revision f933672168f6deff5e3636584bec735416b5a93b
1f933672168f6deff5e3636584bec735416b5a93bChris Banes/*
2f933672168f6deff5e3636584bec735416b5a93bChris Banes * Copyright (C) 2015 The Android Open Source Project
3f933672168f6deff5e3636584bec735416b5a93bChris Banes *
4f933672168f6deff5e3636584bec735416b5a93bChris Banes * Licensed under the Apache License, Version 2.0 (the "License");
5f933672168f6deff5e3636584bec735416b5a93bChris Banes * you may not use this file except in compliance with the License.
6f933672168f6deff5e3636584bec735416b5a93bChris Banes * You may obtain a copy of the License at
7f933672168f6deff5e3636584bec735416b5a93bChris Banes *
8f933672168f6deff5e3636584bec735416b5a93bChris Banes *      http://www.apache.org/licenses/LICENSE-2.0
9f933672168f6deff5e3636584bec735416b5a93bChris Banes *
10f933672168f6deff5e3636584bec735416b5a93bChris Banes * Unless required by applicable law or agreed to in writing, software
11f933672168f6deff5e3636584bec735416b5a93bChris Banes * distributed under the License is distributed on an "AS IS" BASIS,
12f933672168f6deff5e3636584bec735416b5a93bChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f933672168f6deff5e3636584bec735416b5a93bChris Banes * See the License for the specific language governing permissions and
14f933672168f6deff5e3636584bec735416b5a93bChris Banes * limitations under the License.
15f933672168f6deff5e3636584bec735416b5a93bChris Banes */
16f933672168f6deff5e3636584bec735416b5a93bChris Banes
17f933672168f6deff5e3636584bec735416b5a93bChris Banespackage android.support.v7.widget;
18f933672168f6deff5e3636584bec735416b5a93bChris Banes
19f933672168f6deff5e3636584bec735416b5a93bChris Banes
20f933672168f6deff5e3636584bec735416b5a93bChris Banesimport android.content.res.Resources;
21f933672168f6deff5e3636584bec735416b5a93bChris Banesimport android.content.res.Resources.Theme;
22f933672168f6deff5e3636584bec735416b5a93bChris Banesimport android.support.annotation.Nullable;
23f933672168f6deff5e3636584bec735416b5a93bChris Banesimport android.view.View;
24f933672168f6deff5e3636584bec735416b5a93bChris Banesimport android.view.ViewGroup;
25f933672168f6deff5e3636584bec735416b5a93bChris Banesimport android.widget.SpinnerAdapter;
26f933672168f6deff5e3636584bec735416b5a93bChris Banes
27f933672168f6deff5e3636584bec735416b5a93bChris Banes/**
28f933672168f6deff5e3636584bec735416b5a93bChris Banes * An extension of SpinnerAdapter that is capable of inflating drop-down views
29f933672168f6deff5e3636584bec735416b5a93bChris Banes * against a different theme than normal views.
30f933672168f6deff5e3636584bec735416b5a93bChris Banes * <p>
31f933672168f6deff5e3636584bec735416b5a93bChris Banes * Classes that implement this interface should use the theme provided to
32f933672168f6deff5e3636584bec735416b5a93bChris Banes * {@link #setDropDownViewTheme(Theme)} when creating views in
33f933672168f6deff5e3636584bec735416b5a93bChris Banes * {@link SpinnerAdapter#getDropDownView(int, View, ViewGroup)}.
34f933672168f6deff5e3636584bec735416b5a93bChris Banes */
35f933672168f6deff5e3636584bec735416b5a93bChris Banespublic interface ThemedSpinnerAdapter extends SpinnerAdapter {
36f933672168f6deff5e3636584bec735416b5a93bChris Banes    /**
37f933672168f6deff5e3636584bec735416b5a93bChris Banes     * Sets the {@link Resources.Theme} against which drop-down views are
38f933672168f6deff5e3636584bec735416b5a93bChris Banes     * inflated.
39f933672168f6deff5e3636584bec735416b5a93bChris Banes     *
40f933672168f6deff5e3636584bec735416b5a93bChris Banes     * @param theme the context against which to inflate drop-down views, or
41f933672168f6deff5e3636584bec735416b5a93bChris Banes     *              {@code null} to use the default theme
42f933672168f6deff5e3636584bec735416b5a93bChris Banes     * @see SpinnerAdapter#getDropDownView(int, View, ViewGroup)
43f933672168f6deff5e3636584bec735416b5a93bChris Banes     */
44f933672168f6deff5e3636584bec735416b5a93bChris Banes    void setDropDownViewTheme(@Nullable Resources.Theme theme);
45f933672168f6deff5e3636584bec735416b5a93bChris Banes
46f933672168f6deff5e3636584bec735416b5a93bChris Banes    /**
47f933672168f6deff5e3636584bec735416b5a93bChris Banes     * Returns the value previously set by a call to
48f933672168f6deff5e3636584bec735416b5a93bChris Banes     * {@link #setDropDownViewTheme(Theme)}.
49f933672168f6deff5e3636584bec735416b5a93bChris Banes     *
50f933672168f6deff5e3636584bec735416b5a93bChris Banes     * @return the {@link Resources.Theme} against which drop-down views are
51f933672168f6deff5e3636584bec735416b5a93bChris Banes     *         inflated, or {@code null} if one has not been explicitly set
52f933672168f6deff5e3636584bec735416b5a93bChris Banes     */
53f933672168f6deff5e3636584bec735416b5a93bChris Banes    @Nullable
54f933672168f6deff5e3636584bec735416b5a93bChris Banes    Resources.Theme getDropDownViewTheme();
55f933672168f6deff5e3636584bec735416b5a93bChris Banes}
56