我在ViewPager
的活动和片段中制作ViewPager
。我在活动中制作了一个浮动动作按钮。当用户移动到某个片段时,我想让浮动动作按钮不可见。我尝试将代码fab.setVisibility(View.INVISIBLE)
添加到特定片段的onResume
中,但它无法正常工作。如何以编程方式设置可见性?
“CertainFragment.java”
public void onResume() {
super.onResume();
FloatingActionButton fab =(FloatingActionButton)getActivity().findViewById(R.id.fab_button_circle_board);
fab.setVisibility(View.INVISIBLE);
}
“certain_activity's_layout.layout”
`
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/circle_board_viewpager">
</android.support.v4.view.ViewPager>
<io.github.yavski.fabspeeddial.FabSpeedDial
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fab_button_circle_board"
app:fabMenu="@menu/fab_menu_circle_board"
app:fabSize="normal"
app:fabGravity="bottom_end"
app:miniFabBackgroundTint="#FFFFFF"
app:miniFabTitleTextColor="@color/colorPrimaryDark"
app:miniFabDrawableTint="@color/colorPrimaryDark"/>
</FrameLayout>`
答案 0 :(得分:1)
您可以将pagechangelistener添加到viewpager(在Activity中),并更改浮动按钮的可见性。
viewPager.addOnPageChangeListener(this);
@Override public void onPageScrolled(int position, float arg1, int arg2) {
changeFab(position); }
private void changeFab(final int currentTabPosition) {
switch (currentTabPosition) {
case 0:
fab.setVisibility(View.VISIBLE);
break;
case 1:
fab.setVisibility(View.GONE);
break;
case 2:
fab.setVisibility(View.VISIBLE);
break;
default:
fab.setVisibility(View.VISIBLE);
break;
}
}
答案 1 :(得分:0)
创建 CallBack ,当该用户输入该Fragment时,调用CallBack方法,并在Activity中的方法中设置该按钮不可见。
答案 2 :(得分:0)
这是因为使用ViewPager + Fragments时ViewPager的预加载。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
if (getUserVisibleHint()) {
FloatingActionButton fab =(FloatingActionButton)getActivity().findViewById(R.id.fab_button_circle_board);
fab.setVisibility(View.INVISIBLE);
}
}
当片段可见时,将调用SetUserVisibleHint(boolean isVisibleToUser)。当片段可见或不可见时,您可以在其中执行某些操作。