Note: Later in this class, you will learn how to make your app compatible down to Android 2.1 (API level 7) for devices that do not support
SearchView
.
Add the Search View to the Action Bar
To add a SearchView
widget to the action bar, create a file named
res/menu/options_menu.xml
in your project and add the following code to the file. This code defines how to create the search item, such as the icon to use and the title of the item. The
collapseActionView
attribute allows your SearchView
to expand to take up the whole action bar and collapse back down into a normal action bar item when not in use. Because of the limited action bar space on handset devices,
using the collapsibleActionView
attribute is recommended to provide a better user experience.http://blog.sina.com.cn/mtkshanghai
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/search"
android:title="@string/search_title"
android:icon="@drawable/ic_search"
android:showAsAction="collapseActionView|ifRoom"
android:actionViewClass="android.widget.SearchView" />
</menu>
Note: If you already have an existing XML file for your menu items, you can add the
<item>
element to that file instead.
To display the SearchView
in the action bar, inflate the XML menu resource (res/menu/options_menu.xml
) in the
onCreateOptionsMenu()
method of your activity:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
return true;
}
If you run your app now, the SearchView
appears in your app's action bar, but it isn't functional. You now need to define
how the SearchView
behaves.
Create a Searchable Configuration
A
searchable configuration defines how the SearchView
behaves and is defined in a
res/xml/searchable.xml
file. At a minimum, a searchable configuration must contain an
android:label
attribute that has the same value as the android:label
attribute of the
<application> or <activity> element in your Android manifest. However, we also recommend adding an
android:hint
attribute to give the user an idea of what to enter into the search box:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search_hint" />
In your application's manifest file, declare a <meta-data>
element that points to the
res/xml/searchable.xml
file, so that your application knows where to find it. Declare the element in an
<activity>
that you want to display the SearchView
in:
<activity ... >
...
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
In the onCreateOptionsMenu()
method that you created before, associate the searchable configuration with the
SearchView
by calling setSearchableInfo(SearchableInfo)
:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
return true;
}
The call to getSearchableInfo()
obtains a SearchableInfo
object that is created from the searchable configuration XML file. When the searchable configuration is correctly associated with your
SearchView
, the SearchView
starts an activity with the
ACTION_SEARCH
intent when a user submits a query. You now need an activity that can filter for this intent and handle the search query.
Create a Searchable Activity
A SearchView
tries to start an activity with the
ACTION_SEARCH
when a user submits a search query. A searchable activity filters for the
ACTION_SEARCH
intent and searches for the query in some sort of data set. To create a searchable activity, declare an activity of your choice to filter for the
ACTION_SEARCH
intent:
<activity android:name=".SearchResultsActivity" ... >
...
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
...
</activity>
In your searchable activity, handle the ACTION_SEARCH
intent by checking for it in your
onCreate()
method.
Note: If your searchable activity launches in single top mode (android:launchMode="singleTop"
), also handle the
ACTION_SEARCH
intent in the onNewIntent()
method. In single top mode, only one instance of your activity is created and subsequent calls to start your activity do not create a new activity on the stack.
This launch mode is useful so users can perform searches from the same activity without creating a new activity instance every time.
public class SearchResultsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
...
handleIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
...
handleIntent(intent);
}
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
//use the query to search your data somehow
}
}
...
}
If you run your app now, the SearchView
can accept the user's query and start your searchable activity with the
ACTION_SEARCH
intent. It is now up to you to figure out how to store and search your data given a query.
相关推荐
sap ep Setting Up Your SAP Enterprise Portal System Landscape
Oracle Solaris 11.3 Setting Up the Application Development Envir
Oracle Solaris 11.2 Setting Up the Application Development Environment in Oracle Solaris 11-14
Installing SSH and setting up the certificate Downloading Hadoop Setting up environment variables Configuring Hadoop Configuring core-site.xml Configuring hdfs-site.xml Configuring yarn-site.xml...
cognos Setting Up Auditing 实例
实用型的webstorm设置setting包。使用方法: 打开“file”下的“import setting”进行选择导入,关闭重启后即可使用
Gprs dial up setting
Setting up ARIS webMethods integration.pdf
Setting Up Usage Tracking in Oracle BIEE
Setting Up TMS320 DSP Interrupts in C dsp的中断参数设置
基于虚拟机的网络搭建视频,基于虚拟机的网络搭建视频,基于虚拟机的网络搭建视频基于虚拟机的网络搭建视频基于虚拟机的网络搭建视频基于虚拟机的网络搭建视频基于虚拟机的网络搭建视频基于虚拟机的网络搭建视频基于...
AFF C190 - Installing and setting up.pdf
AFF A800 - Installing and setting up.pdf
Setting Up the Simulation Environment.............. 2-8 Setting Up the Default Plot Output.. 2-10 Setting Up the PSS Simulation ........ 2-11 Verifying the Fundamental (Beat) Frequency ... 2-12 ...
01 2D Animation Tutorial - Setting Up Flash.srt
MWC飞控板上位机设置,介绍了 RC rate、RC expo、P and I Level 、PITCH/ROLL/YAW PID and rate、ALT and VEL PID 等参数,MWC飞控板上位机介绍文档
CIMCO Setting up a 4th axis machine.mkv
maven仓库下setting设置文件,localRepository 标签中可设置本地地址
Setting Up LAMP Getting Linux Apache MySQL and PHP Working Together 2004