菜单项图标重叠 API 23

Menu Item icon getting overlapped in API 23

我正在使用 Badge 和 layler-list 创建购物车菜单图标,但我发现在 API 23 上菜单图标出现不需要的背景。

activity_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/action_cart1"
        android:icon="@drawable/ic_menu_cart"
        android:title="Cart"
        app:showAsAction="always" />
</menu>

ic_menu_cart.xml

  <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/cart"
        android:gravity="center" />

    <!-- set a place holder Drawable so android:drawable isn't null -->
    <item
        android:id="@+id/ic_badge"
        android:drawable="@drawable/cart" />
</layer-list>

下面是更新购物车数量的代码。

  public static void setBadgeCount(Context context, LayerDrawable icon, String count) {

        BadgeDrawable badge;

        // Reuse drawable if possible
        Drawable reuse = icon.findDrawableByLayerId(R.id.ic_badge);
        if (reuse != null && reuse instanceof BadgeDrawable) {
            badge = (BadgeDrawable) reuse;
        } else {
            badge = new BadgeDrawable(context);
        }

        badge.setCount(count);
        icon.mutate();
        icon.setDrawableByLayerId(R.id.ic_badge, badge);
    }

我已经为不同的 API 创建了 xml,但是没有用。 我想删除背景。 请帮忙!!

据我所知,您必须添加徽章数量和图标。所以在下面添加它的工作方式。

app:actionLayout="@layout/notification_layout"

<item> 中创建 notification_layout.xml 布局并设置您想要的内容。

所以你的 activity_main.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/action_cart1"
        android:orderInCategory="100"
        android:icon="@drawable/ic_menu_cart"
        android:title="Cart"
        app:showAsAction="always"
        android:title="ABD"
        app:actionLayout="@layout/notification_layout" />
</menu>

notification_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="40.0dip"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:clickable="false"
    android:focusable="false"
    android:focusableInTouchMode="false">
<!-- Menu Item Image -->
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:scaleType="center"
        android:src="@drawable/ic_navigation_cart_white" />
<!-- Badge Count -->
    <TextView
        android:id="@+id/actionbar_notifcation_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginTop="12.0dip"
        android:layout_marginRight="5.0dip"
        android:gravity="center"
        android:minHeight="15.0dip"
        android:minWidth="15.0dip"
        android:paddingLeft="3.0dip"
        android:paddingRight="3.0dip"
        android:textSize="10.0sp"
        android:background="@drawable/TextView_design"
        android:textColor="@android:color/white" />
</RelativeLayout>

输出如下: