菜单项图标重叠 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>
输出如下:
我正在使用 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>
输出如下: