diff options
author | Chris Banes <chrisbanes@google.com> | 2014-10-03 08:36:58 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-10-03 08:37:00 +0000 |
commit | cb838606af158fbbe510e14571e84b8cb099c592 (patch) | |
tree | 40e7e332886ad8a7e7e681d961fdb11450ab96ba /samples/Support7Demos | |
parent | e5aa0f3fa86c93789f8e03b3601998e3fc7eab8e (diff) | |
parent | cbeaa03cb8c7e3c80e4e4e337f10a1a57ff0915b (diff) | |
download | android_development-cb838606af158fbbe510e14571e84b8cb099c592.tar.gz android_development-cb838606af158fbbe510e14571e84b8cb099c592.tar.bz2 android_development-cb838606af158fbbe510e14571e84b8cb099c592.zip |
Merge "Update Support7Demos for L appcompat" into lmp-mr1-dev
Diffstat (limited to 'samples/Support7Demos')
16 files changed, 764 insertions, 25 deletions
diff --git a/samples/Support7Demos/AndroidManifest.xml b/samples/Support7Demos/AndroidManifest.xml index 4077bb110..703d657d2 100644 --- a/samples/Support7Demos/AndroidManifest.xml +++ b/samples/Support7Demos/AndroidManifest.xml @@ -31,7 +31,7 @@ reading images from the media store from API v19+. --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> - <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17" /> + <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="21" /> <!-- The smallest screen this app works on is a phone. The app will scale its UI to larger screens but doesn't make good use of them @@ -130,6 +130,16 @@ </intent-filter> </activity> + <activity android:name=".app.SearchActivity"> + <intent-filter> + <action android:name="android.intent.action.SEARCH" /> + </intent-filter> + + <meta-data android:name="android.app.searchable" + android:resource="@xml/searchable" /> + + </activity> + <activity android:name=".app.ActionBarUsage" android:label="@string/action_bar_usage" android:theme="@style/Theme.AppCompat"> @@ -151,7 +161,7 @@ <activity android:name=".app.ActionBarTabs" android:label="@string/action_bar_tabs" - android:theme="@style/Theme.AppCompat"> + android:theme="@style/Theme.Custom"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="com.example.android.supportv7.SAMPLE_CODE" /> @@ -160,7 +170,7 @@ <activity android:name=".app.ActionBarSettingsActionProviderActivity" android:label="@string/action_bar_settings_action_provider" - android:theme="@style/Theme.AppCompat"> + android:theme="@style/Theme.AppCompat.Light.DarkActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="com.example.android.supportv7.SAMPLE_CODE" /> @@ -177,15 +187,49 @@ </activity> <activity android:name=".app.ActionBarWithDrawerLayout" - android:label="@string/action_bar_with_navigation_drawer" - android:theme="@style/Theme.AppCompat" - > + android:label="@string/action_bar_with_navigation_drawer" + android:theme="@style/Theme.AppCompat" + > + <intent-filter> + <action android:name="android.intent.action.MAIN"/> + <category android:name="com.example.android.supportv7.SAMPLE_CODE"/> + </intent-filter> + </activity> + + <activity android:name=".app.ToolbarUsage" + android:label="@string/toolbar_usage" + android:theme="@style/Theme.Custom.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="com.example.android.supportv7.SAMPLE_CODE" /> </intent-filter> + + <meta-data + android:name="android.app.default_searchable" + android:value=".app.SearchActivity" /> </activity> + <activity android:name=".app.ToolbarDisplayOptions" + android:label="@string/toolbar_display_options" + android:theme="@style/Theme.AppCompat.Light.NoActionBar"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="com.example.android.supportv7.SAMPLE_CODE" /> + </intent-filter> + </activity> + + <activity android:name=".app.ToolbarFragmentPagerMenu" + android:label="@string/toolbar_fragment_pager" + android:theme="@style/Theme.AppCompat.Light.NoActionBar"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="com.example.android.supportv7.SAMPLE_CODE" /> + </intent-filter> + </activity> + + <provider android:name=".app.RecentSuggestionsProvider" + android:authorities="com.example.android.supportv7.RecentSuggestionsProvider" /> + <!-- RecyclerView samples --> <activity android:name=".widget.RecyclerViewActivity" android:label="@string/recycler_view" diff --git a/samples/Support7Demos/res/layout/toolbar_display_options.xml b/samples/Support7Demos/res/layout/toolbar_display_options.xml new file mode 100644 index 000000000..cc3e66c5a --- /dev/null +++ b/samples/Support7Demos/res/layout/toolbar_display_options.xml @@ -0,0 +1,85 @@ +<?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. +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <android.support.v7.widget.Toolbar + android:id="@+id/toolbar" + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:minHeight="?attr/actionBarSize" + android:background="?attr/colorPrimary" /> + + <ScrollView + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <Button + android:id="@+id/toggle_home_as_up" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/toggle_home_as_up"/> + + <Button + android:id="@+id/toggle_show_home" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/toggle_show_home"/> + + <Button + android:id="@+id/toggle_use_logo" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/toggle_use_logo"/> + + <Button + android:id="@+id/toggle_show_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/toggle_show_title"/> + + <Button + android:id="@+id/toggle_show_custom" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/toggle_show_custom"/> + + <Button + android:id="@+id/cycle_custom_gravity" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/cycle_custom_gravity"/> + + <Button + android:id="@+id/toggle_visibility" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/toggle_visibility"/> + + </LinearLayout> + + </ScrollView> + +</LinearLayout>
\ No newline at end of file diff --git a/samples/Support7Demos/res/layout/toolbar_fragment_pager.xml b/samples/Support7Demos/res/layout/toolbar_fragment_pager.xml new file mode 100644 index 000000000..9f56f194b --- /dev/null +++ b/samples/Support7Demos/res/layout/toolbar_fragment_pager.xml @@ -0,0 +1,34 @@ +<?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. +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <android.support.v7.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?actionBarSize" + android:background="?attr/colorPrimaryDark" /> + + <android.support.v4.view.ViewPager + android:id="@+id/viewpager" + android:layout_width="match_parent" + android:layout_height="match_parent"/> + +</LinearLayout>
\ No newline at end of file diff --git a/samples/Support7Demos/res/layout/toolbar_usage.xml b/samples/Support7Demos/res/layout/toolbar_usage.xml new file mode 100644 index 000000000..b202e1f68 --- /dev/null +++ b/samples/Support7Demos/res/layout/toolbar_usage.xml @@ -0,0 +1,40 @@ +<?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. +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <android.support.v7.widget.Toolbar + android:id="@+id/toolbar" + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:minHeight="?attr/actionBarSize" + android:background="?attr/colorPrimaryDark" + app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" + app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:text="Your content" + android:gravity="center" + android:textAppearance="?android:attr/textAppearanceLarge"/> + +</LinearLayout>
\ No newline at end of file diff --git a/samples/Support7Demos/res/menu/actions.xml b/samples/Support7Demos/res/menu/actions.xml index 38d291ebc..43605fd3c 100644 --- a/samples/Support7Demos/res/menu/actions.xml +++ b/samples/Support7Demos/res/menu/actions.xml @@ -16,9 +16,9 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_search" - android:icon="@android:drawable/ic_menu_search" android:title="@string/action_bar_search" - app:showAsAction="ifRoom" + android:icon="@drawable/abc_ic_search_api_mtrl_alpha" + app:showAsAction="ifRoom|collapseActionView" app:actionViewClass="android.support.v7.widget.SearchView" /> <item android:id="@+id/action_add" android:icon="@android:drawable/ic_menu_add" @@ -30,6 +30,7 @@ <item android:id="@+id/action_share" android:icon="@android:drawable/ic_menu_share" android:title="@string/action_bar_share" + android:enabled="false" app:showAsAction="ifRoom" /> <item android:id="@+id/action_sort" android:icon="@android:drawable/ic_menu_sort_by_size" @@ -38,12 +39,10 @@ <menu> <item android:id="@+id/action_sort_size" android:icon="@android:drawable/ic_menu_sort_by_size" - android:title="@string/action_bar_sort_size" - android:onClick="onSort" /> + android:title="@string/action_bar_sort_size" /> <item android:id="@+id/action_sort_alpha" android:icon="@android:drawable/ic_menu_sort_alphabetically" - android:title="@string/action_bar_sort_alpha" - android:onClick="onSort" /> + android:title="@string/action_bar_sort_alpha" /> </menu> </item> </menu> diff --git a/samples/Support7Demos/res/values/strings.xml b/samples/Support7Demos/res/values/strings.xml index 14569a53d..03282affd 100644 --- a/samples/Support7Demos/res/values/strings.xml +++ b/samples/Support7Demos/res/values/strings.xml @@ -121,6 +121,9 @@ necessary. </string> + <string name="toolbar_usage">AppCompat/Toolbar/Toolbar as Action Bar</string> + <string name="toolbar_display_options">AppCompat/Toolbar/Toolbar Display Options</string> + <string name="toolbar_fragment_pager">AppCompat/Toolbar/Toolbar Fragment ViewPager</string> <string name="sample_media_route_provider_remote">Remote Playback (Simulated)</string> <string name="sample_media_route_activity_local">Local Playback</string> @@ -156,5 +159,6 @@ <string name="palette">Palette</string> <string name="palette_all_colors">Full color palette</string> + <string name="search_hint">Search...</string> </resources> diff --git a/samples/Support7Demos/res/values/styles.xml b/samples/Support7Demos/res/values/styles.xml new file mode 100644 index 000000000..f085fa5f0 --- /dev/null +++ b/samples/Support7Demos/res/values/styles.xml @@ -0,0 +1,32 @@ +<?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> + + <style name="Theme.Custom" parent="Theme.AppCompat.Light.DarkActionBar"> + <item name="colorPrimary">#ff00bcd4</item> + <item name="colorPrimaryDark">#00838f</item> + <item name="colorAccent">#ffff00</item> + </style> + + <style name="Theme.Custom.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"> + <item name="colorPrimary">#ff00bcd4</item> + <item name="colorPrimaryDark">#00838f</item> + <item name="colorAccent">#ffff00</item> + </style> + +</resources>
\ No newline at end of file diff --git a/samples/Support7Demos/res/xml/searchable.xml b/samples/Support7Demos/res/xml/searchable.xml new file mode 100644 index 000000000..7f0fa74d5 --- /dev/null +++ b/samples/Support7Demos/res/xml/searchable.xml @@ -0,0 +1,22 @@ +<?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. +--> + +<searchable xmlns:android="http://schemas.android.com/apk/res/android" + android:label="@string/activity_sample_code" + android:hint="@string/search_hint" + android:searchSuggestAuthority="com.example.android.supportv7.RecentSuggestionsProvider" + android:searchSuggestSelection=" ?" />
\ No newline at end of file diff --git a/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarDisplayOptions.java b/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarDisplayOptions.java index b7b25e8f8..ebda99905 100644 --- a/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarDisplayOptions.java +++ b/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarDisplayOptions.java @@ -15,6 +15,8 @@ */ package com.example.android.supportv7.app; +import com.example.android.supportv7.R; + import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.ActionBar; @@ -24,8 +26,8 @@ import android.view.Gravity; import android.view.Menu; import android.view.View; import android.view.ViewGroup.LayoutParams; - -import com.example.android.supportv7.R; +import android.widget.ArrayAdapter; +import android.widget.Toast; /** * This demo shows how various action bar display option flags can be combined and their effects. @@ -59,6 +61,21 @@ public class ActionBarDisplayOptions extends ActionBarActivity bar.addTab(bar.newTab().setText("Tab 1").setTabListener(this)); bar.addTab(bar.newTab().setText("Tab 2").setTabListener(this)); bar.addTab(bar.newTab().setText("Tab 3").setTabListener(this)); + + final ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(bar.getThemedContext(), + R.layout.support_simple_spinner_dropdown_item, + new String[] { "Item 1", "Item 2", "Item 3" }); + bar.setListNavigationCallbacks(listAdapter, new ActionBar.OnNavigationListener() { + @Override + public boolean onNavigationItemSelected(int itemPosition, long itemId) { + Toast.makeText(ActionBarDisplayOptions.this, + listAdapter.getItem(itemPosition), + Toast.LENGTH_SHORT).show(); + return true; + } + }); + + bar.setLogo(R.drawable.ic_media_play); } @Override @@ -94,10 +111,17 @@ public class ActionBarDisplayOptions extends ActionBarActivity flags = ActionBar.DISPLAY_SHOW_CUSTOM; break; case R.id.toggle_navigation: - bar.setNavigationMode( - bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_STANDARD - ? ActionBar.NAVIGATION_MODE_TABS - : ActionBar.NAVIGATION_MODE_STANDARD); + switch (bar.getNavigationMode()) { + case ActionBar.NAVIGATION_MODE_STANDARD: + bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); + break; + case ActionBar.NAVIGATION_MODE_TABS: + bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); + break; + case ActionBar.NAVIGATION_MODE_LIST: + bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + break; + } return; case R.id.cycle_custom_gravity: { ActionBar.LayoutParams lp = mCustomViewLayoutParams; diff --git a/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarTabs.java b/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarTabs.java index aaa916cf3..4bfea5010 100644 --- a/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarTabs.java +++ b/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarTabs.java @@ -36,7 +36,6 @@ public class ActionBarTabs extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.action_bar_tabs); } @@ -61,10 +60,8 @@ public class ActionBarTabs extends ActionBarActivity { if (bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS) { bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); - bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE); } else { bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); - bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); } } diff --git a/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarUsage.java b/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarUsage.java index 6ed59fbbe..f8c29caed 100644 --- a/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarUsage.java +++ b/samples/Support7Demos/src/com/example/android/supportv7/app/ActionBarUsage.java @@ -67,14 +67,19 @@ public class ActionBarUsage extends ActionBarActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_sort_alpha: + case R.id.action_sort_size: + onSort(item); + break; + } + Toast.makeText(this, "Selected Item: " + item.getTitle(), Toast.LENGTH_SHORT).show(); + return true; } - // This method is specified as an onClick handler in the menu xml and will - // take precedence over the Activity's onOptionsItemSelected method. - // See res/menu/actions.xml for more info. - public void onSort(MenuItem item) { + private void onSort(MenuItem item) { mSortMode = item.getItemId(); // Request a call to onPrepareOptionsMenu so we can change the sort icon supportInvalidateOptionsMenu(); diff --git a/samples/Support7Demos/src/com/example/android/supportv7/app/RecentSuggestionsProvider.java b/samples/Support7Demos/src/com/example/android/supportv7/app/RecentSuggestionsProvider.java new file mode 100644 index 000000000..8d6666d1a --- /dev/null +++ b/samples/Support7Demos/src/com/example/android/supportv7/app/RecentSuggestionsProvider.java @@ -0,0 +1,28 @@ +/* + * 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. + */ + +package com.example.android.supportv7.app; + +import android.content.SearchRecentSuggestionsProvider; + +public class RecentSuggestionsProvider extends SearchRecentSuggestionsProvider { + public final static String AUTHORITY = "com.example.android.supportv7.RecentSuggestionsProvider"; + public final static int MODE = DATABASE_MODE_QUERIES; + + public RecentSuggestionsProvider() { + setupSuggestions(AUTHORITY, MODE); + } +}
\ No newline at end of file diff --git a/samples/Support7Demos/src/com/example/android/supportv7/app/SearchActivity.java b/samples/Support7Demos/src/com/example/android/supportv7/app/SearchActivity.java new file mode 100644 index 000000000..622516f7a --- /dev/null +++ b/samples/Support7Demos/src/com/example/android/supportv7/app/SearchActivity.java @@ -0,0 +1,45 @@ +/* + * 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. + */ + +package com.example.android.supportv7.app; + +import android.app.Activity; +import android.app.SearchManager; +import android.content.Intent; +import android.os.Bundle; +import android.provider.SearchRecentSuggestions; + +/** + * An Activity which is only used for recieving ACTION_SEARCH intents, saving any queries + * to our SearchRecentSuggestions so that SearchView's can display suggestions. + */ +public class SearchActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Get the intent, verify the action and get the query + Intent intent = getIntent(); + if (Intent.ACTION_SEARCH.equals(intent.getAction())) { + String query = intent.getStringExtra(SearchManager.QUERY); + SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this, + RecentSuggestionsProvider.AUTHORITY, RecentSuggestionsProvider.MODE); + suggestions.saveRecentQuery(query, null); + finish(); + } + } +} diff --git a/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarDisplayOptions.java b/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarDisplayOptions.java new file mode 100644 index 000000000..f5c3d7587 --- /dev/null +++ b/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarDisplayOptions.java @@ -0,0 +1,129 @@ +/* + * 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. + */ + +package com.example.android.supportv7.app; + +import com.example.android.supportv7.R; + +import android.os.Bundle; +import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.ActionBar; +import android.support.v7.app.ActionBar.Tab; +import android.support.v7.app.ActionBarActivity; +import android.support.v7.widget.Toolbar; +import android.view.Gravity; +import android.view.Menu; +import android.view.View; +import android.view.ViewGroup.LayoutParams; +import android.widget.ArrayAdapter; +import android.widget.Toast; + +/** + * This demo shows how various action bar display option flags can be combined and their effects + * when used on a Toolbar-provided Action Bar + */ +public class ToolbarDisplayOptions extends ActionBarActivity + implements View.OnClickListener { + + private View mCustomView; + private ActionBar.LayoutParams mCustomViewLayoutParams; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.toolbar_display_options); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + findViewById(R.id.toggle_home_as_up).setOnClickListener(this); + findViewById(R.id.toggle_show_home).setOnClickListener(this); + findViewById(R.id.toggle_use_logo).setOnClickListener(this); + findViewById(R.id.toggle_show_title).setOnClickListener(this); + findViewById(R.id.toggle_show_custom).setOnClickListener(this); + findViewById(R.id.cycle_custom_gravity).setOnClickListener(this); + findViewById(R.id.toggle_visibility).setOnClickListener(this); + + // Configure several action bar elements that will be toggled by display options. + mCustomView = getLayoutInflater().inflate(R.layout.action_bar_display_options_custom, null); + mCustomViewLayoutParams = new ActionBar.LayoutParams( + LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.display_options_actions, menu); + return true; + } + + @Override + public boolean onSupportNavigateUp() { + finish(); + return true; + } + + @Override + public void onClick(View v) { + final ActionBar bar = getSupportActionBar(); + int flags = 0; + switch (v.getId()) { + case R.id.toggle_home_as_up: + flags = ActionBar.DISPLAY_HOME_AS_UP; + break; + case R.id.toggle_show_home: + flags = ActionBar.DISPLAY_SHOW_HOME; + break; + case R.id.toggle_use_logo: + flags = ActionBar.DISPLAY_USE_LOGO; + getSupportActionBar().setLogo(R.drawable.ic_media_play); + break; + case R.id.toggle_show_title: + flags = ActionBar.DISPLAY_SHOW_TITLE; + break; + case R.id.toggle_show_custom: + flags = ActionBar.DISPLAY_SHOW_CUSTOM; + break; + case R.id.cycle_custom_gravity: { + ActionBar.LayoutParams lp = mCustomViewLayoutParams; + int newGravity = 0; + switch (lp.gravity & Gravity.HORIZONTAL_GRAVITY_MASK) { + case Gravity.LEFT: + newGravity = Gravity.CENTER_HORIZONTAL; + break; + case Gravity.CENTER_HORIZONTAL: + newGravity = Gravity.RIGHT; + break; + case Gravity.RIGHT: + newGravity = Gravity.LEFT; + break; + } + lp.gravity = lp.gravity & ~Gravity.HORIZONTAL_GRAVITY_MASK | newGravity; + bar.setCustomView(mCustomView, lp); + return; + } + case R.id.toggle_visibility: + if (bar.isShowing()) { + bar.hide(); + } else { + bar.show(); + } + return; + } + + int change = bar.getDisplayOptions() ^ flags; + bar.setDisplayOptions(change, flags); + } +} diff --git a/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarFragmentPagerMenu.java b/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarFragmentPagerMenu.java new file mode 100644 index 000000000..9b579338c --- /dev/null +++ b/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarFragmentPagerMenu.java @@ -0,0 +1,171 @@ +/* + * 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. + */ + +package com.example.android.supportv7.app; + +import com.example.android.supportv7.R; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.app.FragmentTransaction; +import android.support.v4.view.MenuItemCompat; +import android.support.v4.view.ViewPager; +import android.support.v7.app.ActionBarActivity; +import android.support.v7.widget.Toolbar; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.TextView; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.List; + +/** + * Demonstrates how fragments can participate in the options menu from within a {@link ViewPager}. + */ +public class ToolbarFragmentPagerMenu extends ActionBarActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.toolbar_fragment_pager); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + ViewPager vp = (ViewPager) findViewById(R.id.viewpager); + PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), + new MenuFragment(), new Menu2Fragment()); + vp.setAdapter(adapter); + } + + private static class PagerAdapter extends FragmentPagerAdapter { + private final List<Fragment> mFragments; + + public PagerAdapter(FragmentManager fm, Fragment... fragments) { + super(fm); + + mFragments = new ArrayList<Fragment>(); + for (Fragment fragment : fragments) { + mFragments.add(fragment); + } + } + + @Override + public Fragment getItem(int position) { + return mFragments.get(position); + } + + @Override + public int getCount() { + return mFragments.size(); + } + } + + /** + * A fragment that displays a menu. This fragment happens to not + * have a UI (it does not implement onCreateView), but it could also + * have one if it wanted. + */ + public static class MenuFragment extends Fragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + MenuItemCompat.setShowAsAction(menu.add("Menu 1a"), MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); + MenuItemCompat.setShowAsAction(menu.add("Menu 1b"), MenuItemCompat.SHOW_AS_ACTION_NEVER); + super.onCreateOptionsMenu(menu, inflater); + } + + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + TextView textView = new TextView(container.getContext()); + + textView.setText(getClass().getSimpleName()); + textView.setGravity(Gravity.CENTER); + textView.setLayoutParams(new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + + return textView; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getTitle().equals("Menu 1a")) { + Toast.makeText(getActivity(), "Selected Menu 1a.", Toast.LENGTH_SHORT).show(); + return true; + } + if (item.getTitle().equals("Menu 1b")) { + Toast.makeText(getActivity(), "Selected Menu 1b.", Toast.LENGTH_SHORT).show(); + return true; + } + return super.onOptionsItemSelected(item); + } + } + + /** + * Second fragment with a menu. + */ + public static class Menu2Fragment extends Fragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + MenuItemCompat.setShowAsAction(menu.add("Menu 2"), MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); + } + + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + TextView textView = new TextView(container.getContext()); + + textView.setText(getClass().getSimpleName()); + textView.setGravity(Gravity.CENTER); + textView.setLayoutParams(new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + + return textView; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getTitle().equals("Menu 2")) { + Toast.makeText(getActivity(), "Selected Menu 2.", Toast.LENGTH_SHORT).show(); + return true; + } + return false; + } + } +} diff --git a/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarUsage.java b/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarUsage.java new file mode 100644 index 000000000..f5ac03b84 --- /dev/null +++ b/samples/Support7Demos/src/com/example/android/supportv7/app/ToolbarUsage.java @@ -0,0 +1,80 @@ +/* + * 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. + */ +package com.example.android.supportv7.app; + +import com.example.android.supportv7.R; + +import android.app.SearchManager; +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.os.Handler; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v4.view.MenuItemCompat; +import android.support.v7.app.ActionBarActivity; +import android.support.v7.view.ActionMode; +import android.support.v7.widget.PopupMenu; +import android.support.v7.widget.SearchView; +import android.support.v7.widget.Toolbar; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +/** + * This demonstrates idiomatic usage of the Toolbar as the action bar. + */ +public class ToolbarUsage extends ActionBarActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.toolbar_usage); + + // Retrieve the Toolbar from our content view, and set it as the action bar + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.actions, menu); + + // Retrieve the SearchView and plug it into SearchManager + final SearchView searchView = (SearchView) MenuItemCompat + .getActionView(menu.findItem(R.id.action_search)); + + SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE); + searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); + + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + Toast.makeText(this, "Selected Item: " + item.getTitle(), Toast.LENGTH_SHORT).show(); + return true; + } + +} |