【问题标题】:dynamically enable/disable hide/unhide Android ActionBar action icon动态启用/禁用隐藏/取消隐藏 Android ActionBar 动作图标
【发布时间】:2019-05-06 03:22:47
【问题描述】:

我正在开发一个使用标准 ActionBar 的 Android 应用程序。
在某个屏幕上,我有一个有条件需要的过滤器图标,
取决于正在显示的数据的特征,例如一些数据是可过滤的
其他人没有。
我在操作栏上找不到任何看起来可能适合编程的方法 隐藏操作栏操作图标。 如何启用/禁用操作栏操作图标?
或者
如何隐藏/取消隐藏操作栏操作图标?

【问题讨论】:

    标签: android android-actionbar


    【解决方案1】:

    看看这个,它展示了如何在运行时更改菜单项。

    http://developer.android.com/guide/topics/ui/menus.html#ChangingTheMenu

    例如,您可以在 onCreateOpionsMenu() 中将菜单保存为 Activity 的成员变量,然后执行以下操作:

    MenuItem item = mMenu.findItem(R.id.addAction);
    item.doSomething()
    

    当您想要更改特定菜单项上的某些内容时。

    【讨论】:

    • 菲尔,感谢您抽出宝贵时间。这正是我所需要的。很惭愧我自己找不到它:-)
    【解决方案2】:

    您可以通过覆盖 onPrepareOptionsMenu() 方法来实现。 这是一个小例子

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        if (count < 1)
            menu.getItem(4).setEnabled(false); //disable menuitem 5
        if (!after)
        menu.getItem(1).setVisible(false); // invisible menuitem 2
        invalidateOptionsMenu();
        return true;
    }
    

    但是,只有在您单击操作栏中的菜单按钮时才会调用此方法。如果操作栏上有任何图标(菜单按钮除外),单击该图标不会触发 OnPrepareOptionsMenu() 方法。为了手动触发此方法,您可以在方法中使用 invalidateOptionsMenu()。像这样

    void yourMethod () {
    ...
    invalidateOptionsMenu();
    ...
    }
    

    【讨论】:

    • 如何在 Fragment 上进行操作?如何使OptionsMenu();无效?
    【解决方案3】:

    据我了解,您需要删除显示在操作栏左上方的图标。

    你可以用这行简单的代码做到这一点:

    final ActionBar actionBar = getActionBar();     
    actionBar.setDisplayShowTitleEnabled(false);
    

    如果您想去掉应用名称,请尝试:

    actionBar.setDisplayShowHomeEnabled(false);
    

    希望这会有所帮助。

    【讨论】:

    • 不是 OP 要求的
    【解决方案4】:

    你也可以试试这个:

    final ActionBar actionBar= getActionBar();
    actionBar.hide();
    

    它将隐藏图标和标题。

    不要忘记你的导入:

    import android.app.ActionBar;
    

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多