0

我正在开发一个应用程序,在该应用程序中我也必须使用低于 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 上提供的图像。我很抱歉,但我已经搜索了很多,但没有在代码中得到图像点击监听器事件。请帮我。

在此处输入图像描述

4

1 回答 1

1

其中 mModes = startActionMode(new AnActionModeOfEpicProportions()); 是将提供 ActionBar 的代码。但是我怎样才能控制这个 Actionbar 类的 backKey 按下。请给我建议。

startActionMode“提供 ActionBar”它启动与标准不同的上下文操作栏ActionBar。您很可能不需要观察上下文操作栏的 BACK 按钮,但您确实有一个回调,因为 BACK 按钮将触发上下文操作栏关闭,因此onDestroyActionMode将被调用。如果您仍想查看 BACK 按钮,则在onBackPressed回调中实现一个 watch 以查看它是否在上下文操作栏当前显示时被调用。

我还想更改 ActionBar 上提供的图像。

对于该标准ActionBar,有很多关于如何更改其外观的教程/示例/文档。对于上下文操作栏,您还可以选择使用自定义主题更改其外观(例如,检查此问题)。

我很抱歉,但我已经搜索了很多,但没有在代码中得到图像点击监听器事件

没有意义,更好地解释你在找什么。

于 2013-03-26T11:51:45.267 回答