我正在创建一个带有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,但没有用。 我想删除背景。 请帮助!!
答案 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>
输出如下: