【问题标题】:Swipe view with different actionbars使用不同的操作栏滑动视图
【发布时间】:2015-07-11 07:54:45
【问题描述】:

目前我为每个片段都有操作栏,当我滑动片段时,会出现一个新的操作栏来代替旧的操作栏。我想要做的是,当我滑动时,我想将操作栏滑开并放置一个新的。每个片段都应该有自己的操作栏。

我不确定它是否完全有意义,所以我快速演示了我正在尝试做的事情。

【问题讨论】:

    标签: android android-fragments android-actionbar


    【解决方案1】:

    在您的 viewpager 容器(Activity 或 Fragment)中,在您的页面更改侦听器中添加下一行:

    invalidateOptionsMenu();
    supportInvalidateOptionsMenu();//if using the actionbar support library
    getActivity().invalidateOptionsMenu();//if your viewpager container is a fragment
    

    然后在你的 onCreateOptionsMenu()

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.your_menu_layout, menu);
    }
    

    onPrepareOptionsMenu()回调方法在菜单显示之前被调用,我们将使用它使菜单项根据当前片段可见:

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
        int page = yourViewPager.getCurrentItem();
        switch(page) {
            case 0:
                menu.findItem(R.id.item_f1).setVisible(true);
                menu.findItem(R.id.item_f2).setVisible(false);
                menu.findItem(R.id.item_f3).setVisible(false);
                break;
            case 1:
                menu.findItem(R.id.item_f1).setVisible(false);
                menu.findItem(R.id.item_f2).setVisible(true);
                menu.findItem(R.id.item_f3).setVisible(false);
                break;
            case 2:
                menu.findItem(R.id.item_f1).setVisible(false);
                menu.findItem(R.id.item_f2).setVisible(false);
                menu.findItem(R.id.item_f3).setVisible(true);
                break;  
        }
        return true;
    

    如果您的 viewpager 容器是片段,请添加 setHasOptionsMenu(true),如果是活动则不需要。

    参考 - Swipe view with different actionbar items in each swipe fragment

    【讨论】:

    • 这是我目前大致拥有的,它所做的只是用不同的项目替换现有的操作栏。当我滑动页面时,我希望操作栏与片段一起滑动到新页面上。如图所示。
    【解决方案2】:

    您可能正在使用 AppCompat 库中的工具栏。向此工具栏添加一个视图,您可以根据 ViewPager 的位置移动该视图。要制作这样的视图,请查看this question

    您也可以尝试多个工具栏,这可能是可行的,但不支持。如果 AppCompat 库确实得到更新,这可能会导致您的应用程序崩溃。虽然看起来有可能,但根据to this question

    【讨论】:

    • 是的,可以这样做,但是工具栏使用 API 21 及更高版本,这将限制大量设备。如果可以用 ActionBar 完成,那将是首选
    • 您应该使用 AppCompat 库中的工具栏,它与 API 级别 7 兼容。查看此博客文章了解更多信息:android-developers.blogspot.hu/2014/10/… 特别是“工具栏小部件”部分。
    【解决方案3】:

    我不认为 ActionBar 可以做到这一点,它太有限了......我刚刚开始制作我自己的自定义布局,用于我的片段。

    由于我在我的操作栏中实现了很多功能,我可能最好自定义我自己的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      相关资源
      最近更新 更多