Rav*_*r11 19 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();
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;
}
Run Code Online (Sandbox Code Playgroud)
我在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)
Run Code Online (Sandbox Code Playgroud)
ina*_*ruk 12
一个小小的更新:
杰克沃顿目前正在dev分支机构的ActionBarSherlock 4.2.0上工作,并在SearchView那里向后移植.它的功能有限(最值得注意的是 - 不支持SearchableInfo).但他正致力于扩展功能.
我不知道Jake Wharton对backporting的意图,SearchView并且做了我的backport版本(可以在github上找到:abs-search-view).我的版本也不支持SearchableInfo.
这两种实现方式大致相同.他们使用了大部分来自AOSP的相同代码.但是有一些显着的差异.
SearchView具有API 11及更高版本的系统上的原始实现(即它是在所有平台上具有优缺点的相同代码).SearchView,所有功能的后备都支持原始本机版本,并且所有功能都以文档中描述的方式得到支持.就个人而言,我建议坚持使用ActionBarSherlock版本(这样更容易).只有在需要API 11及更高版本的系统上需要这种全功能行为时才使用我的库.
son*_*ida 12
<?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>
Run Code Online (Sandbox Code Playgroud)
Coo*_*ter 11
不幸的是,根据我的阅读和尝试,ActionBarSherlock不支持SearchView小部件.
Android将在未来发布一个支持此功能的向后兼容软件包,但谁知道什么时候会这样做.
从男人自己看到这个链接:https: //github.com/JakeWharton/ActionBarSherlock/issues/70
| 归档时间: |
|
| 查看次数: |
19135 次 |
| 最近记录: |