【问题标题】:PopupMenu in Android 2.1 API 7Android 2.1 API 7 中的弹出菜单
【发布时间】:2012-02-14 10:23:39
【问题描述】:

我正在开发 Android 2.1 API 7 应用程序。我也在使用ActionbarSherlock 库来实现Action Bar

现在,我需要实现 PopupMenu,它只支持 API 11+。

如何在 Android 2.1 API 7 中实现PopupMenu

【问题讨论】:

标签: android


【解决方案1】:

使用 Android 支持 V7 库;
android.support.v7.widget.PopupMenu

【讨论】:

    【解决方案2】:

    我遇到了这样的问题,我为自己找到的唯一解决方案是在 android sdk

    【讨论】:

    • 这是我最终确定的解决方案,即使在发现了 HoloEverywhere 之类的解决方案之后,理论上也允许在早期 API 版本中使用 PopupMenus。它的开销要少得多!
    【解决方案3】:

    您可以使用HoloEveryWhere,它将Holo 主题从android 4.1 带到2.1 及更高版本。

    【讨论】:

    • 如果它对其他人有帮助:我尝试了 HoloEverywhere 路线。这有点像大锤的方法,在您的二进制文件中具有相当大的设置成本和大小开销。您可能需要考虑在 API v7 中是否真的需要 PopupMenu,是否可以使用 ListViewActivity 或类似的东西。
    【解决方案4】:

    它可能在你的代码中导入特定的 API 文件,我认为 eclipse 会为你做这件事,只需编写代码,如果没有导入比谷歌它导入 API。

    【讨论】:

      【解决方案5】:

      您可以创建一个扩展 SherlockDialogFragment 的 ListDialogFragment 并创建自己的 Listener 接口,以便处理选择事件。

      public class ListDialogFragment extends SherlockDialogFragment {
      
      private String[] mValues;
      
      public interface ListDialogListener {
          void onFinishListDialog(int selectedIndex, String tag);
      }
      
      private ListDialogFragment(String[] values) {
          mValues = values;
      }
      
      public static ListDialogFragment newInstance(int index, String[] values) {
          ListDialogFragment fragment = new ListDialogFragment(values);
      
          // Supply index input as an argument.
          Bundle args = new Bundle();
          args.putInt("index", index);
          fragment.setArguments(args);
      
          return fragment;
      }
      
      public int getSelectedIndex() {
          return getArguments().getInt("index", 0);
      }
      
      }
      

      【讨论】:

        猜你喜欢
        • 2017-11-07
        • 2017-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        相关资源
        最近更新 更多