我试图弄清楚如何在溢出菜单(动作栏右侧)中显示项目的自定义视图,但我似乎无法弄明白。 它仍然只显示标题:S。 我想做一些事情,比如twitter如何在下拉菜单的第一项中显示图标,标题和副标题。 谁能帮我吗
Menu.xml中的项目
actionProvider类#1
public class ABDropDown extends ActionProvider { private static final String TAG = "MActionProvider"; private Context context; public ABDropDown(Context context) { super(context); this.context = context; } @Override public View onCreateActionView() { return null; } @Override public boolean hasSubMenu() { Log.d(TAG, "hasSubMenu"); return true; } @Override public boolean onPerformDefaultAction() { Log.d(TAG, "onPerformDefaultAction"); return super.onPerformDefaultAction(); } @Override public void onPrepareSubMenu(SubMenu subMenu) { subMenu.clear(); subMenu.add("Profile").setActionProvider(new ABDropDownProfile(context)); subMenu.add(Menu.NONE, Menu.NONE, 2, "Mezz 2"); } }
我想要显示自定义视图的项目的第二个ActionProvider类
public class ABDropDownProfile extends ActionProvider { private static final String TAG = "MActionProvider"; private Context context; public ABDropDownProfile(Context context) { super(context); this.context = context; } @Override public View onCreateActionView() { View view = View.inflate(context, R.layout.actionbar_viewprofile, null); return view; } @Override public boolean hasSubMenu() { return false; } @Override public boolean onPerformDefaultAction() { Log.d(TAG, "onPerformDefaultAction"); return super.onPerformDefaultAction(); } }
我在如何列出溢出菜单中的自定义行时遇到了同样的问题。 遗憾的是,网上关于自定义操作栏的内容并不多。 如果要在超流菜单中列出仅包含图标和标题的项目,则需要在项目中嵌套项目。 我是这样做的:
实现这个目标:
以下是我的问题的参考:
链接
我希望它可以帮助你。
如果你只想在文本后添加一个drawable(红点),你可以使用imageSpan在主文本之后添加drawable,如下所示:
private MenuItem settingsItem; .... SpannableStringBuilder builder = new SpannableStringBuilder(getString(R.string.settings_menu_name) + " ."); Drawable drawable = getResources().getDrawable(R.drawable.red_dot); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); builder.setSpan(new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE), builder.length()-1, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); settingsItem.setTitle(builder);