我正在研究Android 菜单项。我可以使用操作栏中显示的项目添加徽章。但我想使用溢出菜单项显示相同的徽章。是否有任何解决方案可以将徽章添加到溢出菜单中的菜单项,例如示例图像 和
任何帮助将不胜感激..!!!
我正在研究Android 菜单项。我可以使用操作栏中显示的项目添加徽章。但我想使用溢出菜单项显示相同的徽章。是否有任何解决方案可以将徽章添加到溢出菜单中的菜单项,例如示例图像 和
任何帮助将不胜感激..!!!
你能试试下面吗?
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
是带有徽章的菜单项布局。
以下是在活动中实现的代码。
@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;
}
最后我在Custom PopUp Window + BadgeView的帮助下做到了
这是我所做的。
为弹出窗口创建自定义布局 - 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);
就这样..!!!快乐编码...!!!