Android - 带有搜索过滤器和设置图标的操作栏
Android - Actionbar with Search Filter and setting icon
我正在尝试使用操作栏来实现我的操作栏。
我有两个操作按钮,其中一个是搜索按钮,第二个是设置按钮。
我实现了一个设置按钮,但是我无法实现一个搜索视图。
我该如何实现?
您知道我该如何实现吗?
作为第一步你必须准备search_menu.xml
:
<?xml version="1.0" encoding="utf-8"?>
<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"
app:showAsAction="ifRoom"
app:actionViewClass="android.support.v7.widget.SearchView"
android:title="Search"/>
... your others menu items
</menu>
在下一步中,您必须在 Fragment
或 Activity
中使用此菜单,并为 SearchView
设置 OnQueryTextListener
,如下面的代码所示:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_menu, menu);
final SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView();
search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
}
如果您想在片段中使用菜单,请记住 setHasOptionsMenu(true);
方法。
如果您想自定义 SearchView
您必须为此创建自己的样式,如下面的代码所示:
<style name="CustomAppTheme" parent="Theme.AppCompat">
<item name="searchViewStyle">@style/CustomSearchViewStyle
</item>
</style>
<style name="CustomSearchViewStyle" parent="Widget.AppCompat.SearchView">
<!-- Background for the search query section (e.g. EditText) -->
<item name="queryBackground">...</item>
<!-- Background for the actions section (e.g. voice, submit) -->
<item name="submitBackground">...</item>
<!-- Close button icon -->
<item name="closeIcon">...</item>
<!-- Search button icon -->
<item name="searchIcon">...</item>
<!-- Go/commit button icon -->
<item name="goIcon">...</item>
<!-- Voice search button icon -->
<item name="voiceIcon">...</item>
<!-- Commit icon shown in the query suggestion row -->
<item name="commitIcon">...</item>
<!-- Layout for query suggestion rows -->
<item name="suggestionRowLayout">...</item>
</style>
EXAMPLE 要在 SearchView
中获取 EditText
的旧样式
<style name="CustomAppTheme" parent="Theme.AppCompat">
<item name="searchViewStyle">@style/CustomSearchViewStyle
</item>
</style>
<style name="CustomSearchViewStyle" parent="Widget.AppCompat.SearchView">
<item name="queryBackground">@android:drawable/editbox_background_normal</item>
</style>
记得在 AndroidManifest 中为您的 Activity 设置此样式:
<activity
android:name=".YourActivity"
android:theme="@style/CustomAppTheme"
我正在尝试使用操作栏来实现我的操作栏。
我有两个操作按钮,其中一个是搜索按钮,第二个是设置按钮。
我实现了一个设置按钮,但是我无法实现一个搜索视图。
我该如何实现?
您知道我该如何实现吗?
作为第一步你必须准备search_menu.xml
:
<?xml version="1.0" encoding="utf-8"?>
<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"
app:showAsAction="ifRoom"
app:actionViewClass="android.support.v7.widget.SearchView"
android:title="Search"/>
... your others menu items
</menu>
在下一步中,您必须在 Fragment
或 Activity
中使用此菜单,并为 SearchView
设置 OnQueryTextListener
,如下面的代码所示:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_menu, menu);
final SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView();
search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
}
如果您想在片段中使用菜单,请记住 setHasOptionsMenu(true);
方法。
如果您想自定义 SearchView
您必须为此创建自己的样式,如下面的代码所示:
<style name="CustomAppTheme" parent="Theme.AppCompat">
<item name="searchViewStyle">@style/CustomSearchViewStyle
</item>
</style>
<style name="CustomSearchViewStyle" parent="Widget.AppCompat.SearchView">
<!-- Background for the search query section (e.g. EditText) -->
<item name="queryBackground">...</item>
<!-- Background for the actions section (e.g. voice, submit) -->
<item name="submitBackground">...</item>
<!-- Close button icon -->
<item name="closeIcon">...</item>
<!-- Search button icon -->
<item name="searchIcon">...</item>
<!-- Go/commit button icon -->
<item name="goIcon">...</item>
<!-- Voice search button icon -->
<item name="voiceIcon">...</item>
<!-- Commit icon shown in the query suggestion row -->
<item name="commitIcon">...</item>
<!-- Layout for query suggestion rows -->
<item name="suggestionRowLayout">...</item>
</style>
EXAMPLE 要在 SearchView
EditText
的旧样式
<style name="CustomAppTheme" parent="Theme.AppCompat">
<item name="searchViewStyle">@style/CustomSearchViewStyle
</item>
</style>
<style name="CustomSearchViewStyle" parent="Widget.AppCompat.SearchView">
<item name="queryBackground">@android:drawable/editbox_background_normal</item>
</style>
记得在 AndroidManifest 中为您的 Activity 设置此样式:
<activity
android:name=".YourActivity"
android:theme="@style/CustomAppTheme"