給 ActionBar-MenuItem 顯示角標:Android-ActionItemBadge

這個庫提供了一個簡單方法來給 ActionBar-MenuItem 添加一個小徽章圖標。

給 ActionBar-MenuItem 顯示角標:Android-ActionItemBadge. 給 ActionBar-MenuItem 顯示角標:Android-ActionItemBadge

Include in your project

Using Maven

The ActionItemBadge Library is pushed to [Maven Central], so you just need to add the following dependency to yourbuild.gradle.

dependencies { compile('com.mikepenz:actionitembadge:2.5.5@aar') {
        transitive = true }
}

If you want to use this library with the old ActionBar. Do the following.

dependencies {
    compile 'com.tundem.actionitembadge:library:1.2.0@aar' }

You use ActionbarSherlock? No problem there's now a SNAPSHOT release for ActionbarSherlock. Just do the following:

Add the SNAPSHOT repo to your repositories:

        maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }

And the compile dependency

dependencies {
    compile 'com.tundem.actionitembadge:library-abs:1.2.0@aar' }

Usage

menu.xml

Create your menu.xml as you would do normally and add the app:actionLayout param. It is also a good idea to set showAsAction="always" (The badge can only be shown in the actionbar)

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/item_samplebadge"
        app:actionLayout="@layout/menu_badge"
        app:showAsAction="always"
        android:title="@string/sample_1"/>
</menu>

Activity

Override the onCreateOptionsMenu method

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);

    //you can add some logic (hide it if the count == 0)
        if (badgeCount > 0) {
            ActionItemBadge.update(this, menu.findItem(R.id.item_samplebadge), FontAwesome.Icon.faw_android, ActionItemBadge.BadgeStyle.DARKGREY, badgeCount);
        } else {
            ActionItemBadge.hide(menu.findItem(R.id.item_samplebadge));
        }

    //If you want to add your ActionItem programmatically you can do this too. You do the following:
        new ActionItemBadge.Add().act(this).menu(menu).title(R.string.sample_2).itemDetails(0, SAMPLE2_ID, 1).showAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS).build(ActionItemBadge.BadgeStyle.BLUE_LARGE, 1);
        return true;
    }

If you want to update the item itself you can do the required stuff in the onOptionsItemSelected method and call invalidateOptionsMenu() afterwards.
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.item_samplebadge) {
            Toast.makeText(this, R.string.sample_3, Toast.LENGTH_SHORT).show();
            badgeCount--;
            invalidateOptionsMenu();
            return true;
        } else if (id == SAMPLE2_ID) {
            Toast.makeText(this, R.string.sample_4, Toast.LENGTH_SHORT).show();
        }
        return super.onOptionsItemSelected(item);
    }

項目主頁:http://www.baiduhome.net/lib/view/home/1434791633036

 本文由用戶 mxw8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!