我正在开发一个应用程序,在该应用程序中我也必须使用低于 3.0 的操作。所以我为此使用 Sherlock Library。
但是使用这个库变得非常困难,因为我无法捕捉到一些重要的事件,比如我想在屏幕上使用 ActionBar 和 TabFragments,我已经编辑了代码并像这样使用它:
public class TabNavigation extends SherlockActivity implements ActionBar.TabListener {
private TextView mSelected;
ActionMode mModes;
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(SampleList.THEME); //Used for theme switching in samples
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_navigation);
mSelected = (TextView)findViewById(R.id.text);
mModes = startActionMode(new AnActionModeOfEpicProportions());
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for (int i = 1; i <= 6; i++) {
ActionBar.Tab tab = getSupportActionBar().newTab();
tab.setText("Tab " + i);
tab.setTabListener(this);
getSupportActionBar().addTab(tab);
}
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction transaction) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction transaction) {
mSelected.setText("Selected: " + tab.getText());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction transaction) {
}
private final class AnActionModeOfEpicProportions implements ActionMode.Callback {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
//Used to put dark icons on light action bar
boolean isLight = SampleList.THEME == R.style.Theme_Sherlock_Light;
menu.add("Save")
.setIcon(isLight ? R.drawable.ic_compose_inverse : R.drawable.ic_compose)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add("Search")
.setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add("Refresh")
.setIcon(isLight ? R.drawable.ic_refresh_inverse : R.drawable.ic_refresh)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add("Save")
.setIcon(isLight ? R.drawable.ic_compose_inverse : R.drawable.ic_compose)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add("Search")
.setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add("Refresh")
.setIcon(isLight ? R.drawable.ic_refresh_inverse : R.drawable.ic_refresh)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
Toast.makeText(TabNavigation.this, "Got click: " + item, Toast.LENGTH_SHORT).show();
//mode.finish();
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
}
@Override
protected void onResume() {
super.onResume();
if(mModes!=null){
mModes = startActionMode(new AnActionModeOfEpicProportions());
}
}
}
其中mModes = startActionMode(new AnActionModeOfEpicProportions());
是提供 ActionBar 的代码。但是我怎样才能控制这个 Actionbar 类的 backKey 按下。请给我建议。
我还想更改 ActionBar 上提供的图像。我很抱歉,但我已经搜索了很多,但没有在代码中得到图像点击监听器事件。请帮我。