android – 活动的每个片段中的浮动操作按钮的不同实现

前端之家收集整理的这篇文章主要介绍了android – 活动的每个片段中的浮动操作按钮的不同实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这是关于协调活动中浮动操作按钮的行为的问题,其中包含5个片段.

在我的应用程序中,我有一个Activity,它包含一个ViewPager和一个用FloatingActionButton定义的xml. ViewPager包含片段,每个片段内都有一个RecyclerView.On点击浮动操作按钮我实现了scrollToPosition(0).由于我在main活动的xml文件中实现了Floating ActionButton,因此scrollToPosition()仅在单击浮动操作按钮的最后一个片段中起作用.我如何克服这一点,以便在任何片段中点击浮动按钮时,回收器视图滚动到顶部?

我已经尝试在片段布局文件中实现了floatingactionbutton并且它完全正常.但是当我从一个片段滑动到另一个片段时,浮动动作按钮将会移动.所以有任何方法可以实现我在其中的浮动操作按钮.主活动xml文件,并且仍然能够在点击FloatingActionButton的每个片段中实现scrollToPosotion(0)?非常感谢任何建议.

以下是包含浮动操作按钮的xml文件.

以下是片段的xml文件

以下是每个片段中浮动操作按钮的实现

 fab = (android.support.design.widget.FloatingActionButton) view.findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            LinearLayoutManager llm = (LinearLayoutManager) mRecyclerView.getLayoutManager();
            llm.scrollToPositionWithOffset(0,0);
        }
    });
最佳答案
因为我使用ViewPager,所以不确定这是否适用于SlidingTabLayout.

让FAB onClick在您的活动中调用方法(例如onFABClick())并将其定义为:

public void onFABClick(View view) {
    if (fragments.get(mViewPager.getCurrentItem()) instanceof FragmentA) {
      if (fragmentA!= null) {
        fragmentA.fabOnClick();
      }
    } else if (fragments.get(mViewPager.getCurrentItem()) instanceof FragmentB) {
      if (fragmentB!= null) {
        fragmentB.fabOnClick();
      }
    }
  }

这里片段是保存片段对象的数组.它是传递给ViewPager适配器的数组.我猜你必须用SlidingTabLayout的当前片段方法的等效get索引来改变mViewPager.getCurrentItem().

最后,fabOnClick()方法在每个片段中实现. (您需要让所有片段实现一个接口(例如FABActionInterface)并在那里添加方法签名.

在这里,您基本上是捕获FAB onclick并指示它在当前片段上调用方法.

原文链接:https://www.f2er.com/android/431313.html

猜你在找的Android相关文章