菜单项图标在API 23中重叠

时间:2016-12-30 04:39:05

标签: android android-layout android-studio menu badge

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

enter image description here

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,但没有用。 我想删除背景。 请帮助!!

1 个答案:

答案 0 :(得分:1)

据我了解,您必须添加徽章计数和图标。所以添加以下方式它可以工作。

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>

输出如下:

enter image description here