android - 检查 MenuItem 是否在 ActionBar 溢出

标签 android overflow actionbarsherlock menuitem

问题:如果一个 MenuItem(或哪些 MenuItem)在 ActionBar 的溢出菜单中,有没有办法检查代码? 我正在使用 ActionBarSherlock

我需要这个的原因是因为我有一堆图标,如果有空间,它们将显示在 ActionBar 中。我有一个全息深色主题,所以图标就是为了适应这个主题。

当菜单项被放入溢出菜单时,我的问题就来了。在 Pre-Honeycomb 设备上,这意味着它们将在用户按下菜单按钮时显示。此菜单的背景与我的 ActionBar 完全相反,我想要一组不同的图标来适应它。

最佳答案

我可能找到了这个问题的解决方案:在设计指南 ( here ) 中,有一个表格显示根据倾斜宽度显示的操作栏项目数。

基于该表,我编写了以下代码:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem search = menu.findItem(R.id.menu_search);

    // Get width in dp
    DisplayMetrics metrics = new DisplayMetrics();
    Display display = getWindowManager().getDefaultDisplay();
    display.getMetrics(metrics);
    float logicalDensity = metrics.density;
    int dp = (int) (display.getWidth() / logicalDensity + 0.5);

    if (dp < 360) { // only two icons
        search.setIcon(R.drawable.ic_menu_search);  // Show menu icon for pre-3.0 menu
    } else {
        search.setIcon(R.drawable.ic_action_search); // Show action bar icon for action bar
    }

    return true;
}

关于android - 检查 MenuItem 是否在 ActionBar 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11999260/

相关文章:

android - 既然 apache 的 MultipartEntityBuilder 已被弃用,使用 Volley 库上传图像或文件的最佳方式是什么?

java - 为什么 Java 溢出返回 0 作为值

Android fragment 生命周期

android - 在 Android Studio 0.5.8 中向 Action Bar Sherlock 添加依赖项后出错

java - 什么安卓:inputType should I use for entering an IP Address and hostname?

java - 无法通过 Android/Java 提取 HTML 数据

android - 无法执行 dex : Multiple dex files define Lcom/google/android/gcm/GCMBaseIntentService;

html - 带有标题和自动内容的 CSS 对话框

css - 截断多行文本并出现文本溢出 : ellipsis

android - EditText 不接受数字作为输入