如何使用溢出菜单中显示的菜单项显示徽章
How to Display Badges with Menu Items that are displayed in the overflow menu
我正在 Android Menu Items. I can able to add Badges with the Items that are displayed in the Action Bar .But i want to show the same Badges with the Overflow Menu Items. Is there any solutions to Add Badges to Menu Items in overflow menu Like the Sample Image and
任何帮助将不胜感激..!!!
你能试试下面吗
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
是带有徽章的菜单项布局。
及以下是在activity中实现的代码。
@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;
}
最后我在自定义 PopUp Window + BadgeView
的帮助下做到了
这是我完成的。
为弹出窗口创建自定义布局 Window - 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>
在 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);
就这些了..!!!快乐编码...!!!
我正在 Android Menu Items. I can able to add Badges with the Items that are displayed in the Action Bar .But i want to show the same Badges with the Overflow Menu Items. Is there any solutions to Add Badges to Menu Items in overflow menu Like the Sample Image
任何帮助将不胜感激..!!!
你能试试下面吗
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
是带有徽章的菜单项布局。
及以下是在activity中实现的代码。
@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;
}
最后我在自定义 PopUp Window + BadgeView
的帮助下做到了这是我完成的。
为弹出窗口创建自定义布局 Window - 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>
在 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);
就这些了..!!!快乐编码...!!!