0

我正在研究Android 菜单项。我可以使用操作栏中显示的项目添加徽章。但我想使用溢出菜单项显示相同的徽章。是否有任何解决方案可以将徽章添加到溢出菜单中的菜单项,例如示例图像 图 1图 2

任何帮助将不胜感激..!!!

4

2 回答 2

2

你能试试下面吗?

main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/badge"
        android:actionLayout="@layout/badge_layout"
        android:title="Badges"
        android:showAsAction="always">
    </item>
</menu>

badge_layout是带有徽章的菜单项布局。

以下是在活动中实现的代码。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        RelativeLayout badgeLayout = (RelativeLayout) menu.findItem(R.id.badge).getActionView();
        mCounter = (TextView) badgeLayout.findViewById(R.id.counter);
        return true;
    }
于 2017-02-27T05:07:08.227 回答
1

最后我在Custom PopUp Window + BadgeView的帮助下做到了

这是我所做的。

  1. 为弹出窗口创建自定义布局 - custom_popup.xml

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    
        <ImageView
            android:id="@+id/icon"
            android:layout_width="36dp"
            android:layout_height="36dp"
            android:background="@drawable/icon_menu_facebook"
            android:text="Icon" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Notifications" />
    
        <TextView
            android:id="@+id/badge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="" />
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    
        <ImageView
    
            android:layout_width="36dp"
            android:layout_height="36dp"
            android:background="@drawable/icon_menu_facebook"
            android:text="Icon" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Notifications" />
    
        <TextView
    
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="" />
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    
        <ImageView
    
            android:layout_width="36dp"
            android:layout_height="36dp"
            android:background="@drawable/icon_menu_facebook"
            android:text="Icon" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Notifications" />
    
        <TextView
    
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="" />
    </LinearLayout>
    

2.添加了带有自定义图标的菜单项(溢出菜单图标)-options_menu.xml

  <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/ViewSource"
        android:icon="@drawable/ic_action_viewsource"
        android:title="ViewSource"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/about"
        android:icon="@drawable/ic_action_about"
        android:title="About"
        app:showAsAction="ifRoom">
        <!-- "file" submenu -->
        <menu>
            <item
                android:id="@+id/github"
                android:icon="@drawable/icon_menu_github"
                android:title="Github" />
            <item
                android:id="@+id/linkedin"
                android:icon="@drawable/icon_menu_linkedin"
                android:title="LinkedIn" />
            <item
                android:id="@+id/twitter"
                android:icon="@drawable/icon_menu_twitter"
                android:title="Twitter" />
            <item
                android:id="@+id/facebook"
                android:icon="@drawable/icon_menu_facebook"
                android:title="Facebook" />
        </menu>
    </item>

    <item
        android:id="@+id/notifications"
        android:icon="@drawable/ic_action_name"
        android:title="More"
        app:showAsAction="always"></item>

</menu>
  1. 在 MainActivity.java 在 onOptionsItemSelected(MenuItem item) 中添加了以下代码

          case R.id.notifications:
                LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
                View CustomPopUp = layoutInflater.inflate(R.layout.custom_popup, null);
                popupWindow = new PopupWindow(CustomPopUp, ActionBar.LayoutParams.WRAP_CONTENT,
                        ActionBar.LayoutParams.WRAP_CONTENT);
                if (Build.VERSION.SDK_INT >= 21) {
                    popupWindow.setElevation(5.0f);
                }
                ViewGroup actionBar = getActionBar(getWindow().getDecorView());
                TextView tv_badge = (TextView) CustomPopUp.findViewById(R.id.badge);
                BadgeView badge = new BadgeView(activity);
                badge.setTargetView(tv_badge);
                badge.setBadgeCount(45);
                popupWindow.showAtLocation(actionBar, Gravity.TOP | Gravity.RIGHT, 0, -70);
                popupWindow.setAnimationStyle(R.style.Animation);
                linearlatout.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        popupWindow.dismiss();
                    }
                });
                return true;
           default:
                return super.onOptionsItemSelected(item);
    

就这样..!!!快乐编码...!!!

于 2017-02-27T11:51:14.393 回答