android - 如何覆盖操作栏菜单项的内容描述?

标签 android android-actionbar menuitem android-menu

我有一个 ActionBar,我在 Activity 的 onCreateOptionsMenu(Menu) 方法中添加了几个 MenuItems 对象。但我需要覆盖其中一项的内容描述。

我一直在考虑用 XML 定义 MenuItem 并设置 actionViewClass 属性。回到源代码,为 MenuItem 调用 MenuItem.getActionView(),就像 http://developer.android.com/training/appbar/action-views.html 中描述的那样.这样我就可以在它返回的 View 对象上调用 setContentDescription()。但我宁愿在不使用 XML 文件的情况下这样做。

除了使用 XML 选项之外,还有其他想法吗?

最佳答案

好的,我已经弄明白了。幸运的是,我不必求助于 XML 替代方案。我要做的是创建一个新的 View 对象,然后 apply it as the MenuItem's actionView .困难的部分实际上是将 View 对象的样式设置为任何普通的 MenuItem 看起来像当前主题(如果我在不使用 actionView 的情况下添加它)。按照代码 fragment (假设我的 Activity 名称是 MyActivity):

    public boolean onCreateOptionsMenu(Menu menu) {
        Button buttonView = new Button(this, null, android.R.attr.actionButtonStyle);
        if (Build.VERSION.SDK_INT < 23) {
            buttonView.setTextAppearance(this, android.R.style.TextAppearance_DeviceDefault_Widget_ActionBar_Menu);
        } else {
            buttonView.setTextAppearance(android.R.style.TextAppearance_DeviceDefault_Widget_ActionBar_Menu);
        }
        buttonView.setText(R.string.option_title); // button label
        buttonView.setContentDescription("Content description");
        buttonView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                MyActivity.this.onOptionsItemSelected(item);
            }
        });

        MenuItem item = menu.add(R.string.option_title);
        item.setActionView(buttonView);
        ...
        return super.onCreateOptionsMenu(menu);
    }

关于android - 如何覆盖操作栏菜单项的内容描述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35880060/

相关文章:

android - Ionic 4/Cordova - 获取设备帐户

android - 不同宽度的按钮未与 layout_weight 正确对齐

android - 在操作栏选项卡中添加 Page Curl

android - 如何在滚动android时固定我的工具栏

c# - 获取被点击的菜单项的文本?

android - 如何将位图图像(图钉)放置在 Canvas 圆圈(蓝色圆圈)的中心?

android - AlertDialog - 当用户点击 'OK' 时如何运行检查

android - ActionBar 的大小(以像素为单位)是多少?

Android - 通过代码启用 MenuItems

java - 如何在 Swing 中使用带加号或减号的菜单加速器?