我有这段代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_search, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_logout) {
Intent activity2 = new Intent(ActivityFrontend.this, LoginPage.class);
startActivity(activity2);
}
if (id == R.id.action_search) {
Toast.makeText(ActivityFrontend.this, "Toast OK!", Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
这是我的菜单xml文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!--<item-->
<!--android:id="@+id/action_logout"-->
<!--android:orderInCategory="100"-->
<!--android:title="@string/action_logout"-->
<!--app:showAsAction="never" />-->
<!--<item android:id="@+id/action_search"-->
<!--android:title="Search..."-->
<!--android:icon="@drawable/ic_search_black_24dp"-->
<!--android:showAsAction="always"-->
<!--android:actionViewClass="android.widget.SearchView" />-->
<item
android:id="@+id/action_logout"
android:orderInCategory="100"
android:title="@string/action_logout"
app:showAsAction="never" />
<item android:id="@+id/action_search"
android:title="Search..."
android:icon="@drawable/ic_search_white_24dp"
app:showAsAction="ifRoom"
android:actionViewClass="android.widget.SearchView" />
我想在用户点击它时展开appbar中的搜索图标。我所遵循的教程对我没有用。 我能怎么做? 提前谢谢。
答案 0 :(得分:0)
searchView.setOnSearchClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//write your onclick event here
}
}
答案 1 :(得分:0)
在xml文件夹中创建可搜索的配置
searchable.xml
<?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" />
在清单文件中,声明指向res / xml / searchable.xml的元数据元素
<activity ... >
...
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
在关联可搜索配置文件
之前创建的onCreateOptionsMenu()中 @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
return true;
}
创建可搜索的活动并添加intentfilter
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
在该活动中处理此意图
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
}
}