【问题标题】:Setting Visibility of Floating Action Button in Fragment在 Fragment 中设置浮动操作按钮的可见性
【发布时间】:2017-09-18 01:04:07
【问题描述】:

我在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>`

【问题讨论】:

    标签: android android-fragments android-viewpager


    【解决方案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;
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      创建一个CallBack,当用户进入该Fragment时,调用CallBack的方法,并在Activity的方法中设置按钮不可见。

      【讨论】:

        【解决方案3】:

        这是因为使用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)。片段可见或不可见时,您可以在其中做一些事情。

        【讨论】:

          猜你喜欢
          • 2020-02-26
          • 1970-01-01
          • 2016-07-26
          • 2018-01-14
          • 2020-01-02
          • 1970-01-01
          • 1970-01-01
          • 2011-09-02
          • 2019-01-07
          相关资源
          最近更新 更多