首页 > 技术文章 > ActionBarSherlock包的使用

cuihui 2013-12-29 19:46 原文

ActionBarSherlock包使的在低版本Android平台中可以使用ActionBar。该包的使用参见:http://actionbarsherlock.com/usage.html

 

When creating an activity to use the action bar on all versions of Android, you must declare your activity to extend any of the activity classes that start with 'Sherlock' (e.g., SherlockActivity, SherlockFragmentActivity). Interaction with the action bar is handled by calling getSupportActionBar() (instead of getActionBar()).

 

在项目中引入ABsherlock包后:

step1:Activity extend SherlockActivity,重写getSupportActionBar()方法;

step2:改变Activity的theme,必须使用ABsherlock的主题;

image

使用ABS之前(2.3.6)

image

使用ABS之后

注意:为了支持3.0之前的平台使用AB,包使用了许多与android系统本身自带的部件相同名字的类,主要有:

    •     com.actionbarsherlock.app.ActionBar
    •     com.actionbarsherlock.view.Menu
    •     com.actionbarsherlock.view.MenuItem
    •     com.actionbarsherlock.view.MenuInflater

在代码中务必保证导入了正确的包名

 

此时,按下菜单键,没有任何菜单出来,我们需要重写onCreateOptionsMenu()和onOptionsItemSelected()方法。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        SubMenu subMenu1 = menu.addSubMenu("Action Item");
        subMenu1.add(0, MENU, 0, "MENU");
        subMenu1.add(0, MENU1, 0, "MENU1");
        subMenu1.add(0, MENU2, 0, "MENU2");

        MenuItem subMenu1Item = subMenu1.getItem();
        subMenu1Item.setIcon(R.drawable.ic_title_share_default);
        // 使得subMenu1Item成为AB右上角的下拉菜单
        subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

        SubMenu subMenu2 = menu.addSubMenu("Overflow Item");
        subMenu2.add(0, MENU3, 0, "MENU3");
        subMenu2.add(0, MENU4, 0, "MENU4");
        subMenu2.add(0, MENU5, 0, "MENU5");
        subMenu2.add(0, MENU6, 0, "MENU6");

        MenuItem subMenu2Item = subMenu2.getItem();
        subMenu2Item.setIcon(R.drawable.ic_compose);

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home || item.getItemId() == 0) {
            return false;
        }
        Toast.makeText(this, "You've clicked the item:  \"" + item.getTitle() + "\"", Toast.LENGTH_SHORT).show();
        return true;
    }

image image image


:实践过程中遇到的问题与解决方法

1、“Jar mismatch! Fix your dependencies”错误解决。

这是因为两个项目的jar包(android-support-v4.jar)不一致。 解决方法是把两个项目中的jar改为相同的jar包。比如把其他项目中的v4jar包,拿出来分别放到这两个项目中去,问题即可解决!

推荐阅读