Android ActionbarSherlock SearchView
我们可以使用ActionbarSherlock在Android 2.2中实现SeachView吗 我正在使用以下代码,它在3.0中运行良好,但在2.2中不起作用Android ActionbarSherlock SearchView,android,actionbarsherlock,Android,Actionbarsherlock,我们可以使用ActionbarSherlock在Android 2.2中实现SeachView吗 我正在使用以下代码,它在3.0中运行良好,但在2.2中不起作用 @Override public boolean onCreateOptionsMenu(Menu menu) { //getMenuInflater().inflate(R.menu.main_menu, menu); MenuInflater inflater = getMenuInflater();
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater().inflate(R.menu.main_menu, menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
// set up a listener for the refresh item
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
// Do something
System.out.println("onQueryTextChange----------");
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
// Do something
System.out.println("onQueryTextSubmit----------");
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
return true;
}
我在2.2上遇到以下错误
at 01-23 17:31:53.230: W/MenuInflater(20214): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
01-23 17:31:53.230: W/MenuInflater(20214): at com.actionbarsherlock.internal.view.menu.MenuInflaterImpl$MenuState.newInstance(MenuInflaterImpl.java:533)
01-23 17:31:53.230: W/MenuInflater(20214): at com.actionbarsherlock.internal.view.menu.MenuInflaterImpl$MenuState.setItem(MenuInflaterImpl.java:497)
01-23 17:31:53.230: W/MenuInflater(20214): at com.actionbarsherlock.internal.view.menu.MenuInflaterImpl$MenuState.addItem(MenuInflaterImpl.java:515)
01-23 17:31:53.230: W/MenuInflater(20214): at com.actionbarsherlock.internal.view.menu.MenuInflaterImpl.parseMenu(MenuInflaterImpl.java:238)
01-23 17:31:53.230: W/MenuInflater(20214): at com.actionbarsherlock.internal.view.menu.MenuInflaterImpl.inflate(MenuInflaterImpl.java:164)
01-23 17:31:53.230: W/MenuInflater(20214): at com.actionbarsherlock.sample.styledactionbar.MainActivity.onCreateOptionsMenu(MainActivity.java:99)
01-23 17:31:53.230: W/MenuInflater(20214): at android.support.v4.app.FragmentActivity.dispatchCreateOptionsMenu(FragmentActivity.java:601)
01-23 17:31:53.230: W/MenuInflater(20214): at android.support.v4.app.FragmentActivity.invalidateOptionsMenu(FragmentActivity.java:706)
不幸的是,从我阅读和尝试的内容来看,ActionBarSherlock不支持SearchView小部件 Android将在未来发布一个支持此功能的向后兼容包,但谁知道什么时候会发布 查看该男子本人的链接:
我遇到了类似的问题,因此我创建了一个自定义的SearchView。也许您想在上查看它,一个小的更新:
- Jake Wharton目前正在
分支中开发ActionBarSherlock 4.2.0,并在那里进行了dev
后端口。它的功能有限(最值得注意的是,不支持SearchView
)。但他正在努力扩展功能SearchableInfo
- 我不知道Jake Wharton在backporting
上的意图,我做了我版本的backport(可以在github上找到:)。我的版本也不支持SearchView
SearchableInfo
- ActionBarSherlock backport支持建议适配器
- ActionBarSherlock backport在使用API 11及更高版本的系统上不依赖原始的
实现(即,在所有平台上,它的代码都是相同的,有优缺点)SearchView
- 我的版本不支持建议适配器(但可以添加)
- 我的版本在API 11之前的系统(使用代码的后端口版本)和API 11及更高版本上的功能有限,所有功能都会回退到原始原生版本的
,并且所有功能都以文档中描述的方式得到支持SearchView
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/search"
android:actionLayout="@layout/layout_menu_search"
android:actionViewClass="com.actionbarsherlock.widget.SearchView"
android:icon="@drawable/ic_menu_search"
android:orderInCategory="1"
android:showAsAction="always|collapseActionView"/>
</menu>
另一种选择是根据操作系统版本对搜索视图小部件进行分类。为预蜂窝设备创建自己的搜索视图小部件,并使用API-11+的默认值。SearchView
是一个非常高级的小部件。它的后端口不会是微不足道的。正如相关问题所说,这可能会在未来发生,但这不是我的优先事项。不过,对于某人的贡献来说,这将是完美的…SearchView在4.2版的ABS中实现。SearchableInfo仍然不受支持吗?也就是说,在2012年12月6日发布的“配置搜索小部件”中,人们不能遵循本教程,因为SearchView是在ABS的4.2版中实现的。请查看。我没有用低于3.0的版本测试过它。