这是关于协调活动中浮动操作按钮的行为的问题,其中包含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.
原文链接:https://www.f2er.com/android/431313.html让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)并在那里添加方法签名.