Java 如何隐藏特定片段上的视图

Java 如何隐藏特定片段上的视图,java,android,android-fragments,android-viewpager,Java,Android,Android Fragments,Android Viewpager,我想通过设置drawerGrid.setVisibility(View.GONE)来隐藏GridView当ViewPager位于特定布局上时。我需要实现一个onPageListener还是有一个更简单的选项 Launcher.java Fragment1.java Fragment2.java 您可以通过两种方式实现这一点: 正如您使用addOnPageChangedListener所述 当片段对用户可见时使用回调 如何确定片段何时在ViewPager中可见: 试试这个 public cla

我想通过设置
drawerGrid.setVisibility(View.GONE)来隐藏GridView当ViewPager位于特定布局上时。我需要实现一个
onPageListener
还是有一个更简单的选项

Launcher.java Fragment1.java Fragment2.java
您可以通过两种方式实现这一点:

  • 正如您使用
    addOnPageChangedListener所述
  • 当片段对用户可见时使用回调

  • 如何确定片段何时在ViewPager中可见:

    试试这个

      public class MyFragment extends Fragment {
        @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser) {
              //hide view here
            }
            else {
            }
        }
    }
    
    setUserVisibleHint

    向系统设置一个提示,提示用户当前是否可以看到此片段的UI。此提示默认为true,并且在片段实例状态save和restore之间是持久的


    此处
    isVisibleToUser
    boolean:如果用户当前可以看到此片段的UI,则返回true(默认值);如果用户不可以看到,则返回false。

    是,使用addonpagechange listenerOk,我会试一试。是的,当viewpager位于特定片段上时…
    setUserVisibleHint
    将返回true。因此,您知道该片段当前可见,因为您有两个片段必须同时覆盖…
    setUserVisibleHint
    函数。很抱歉,我误解了您的意思。谢谢,我想这是另一个选择。
    public class PagerAdapter extends FragmentPagerAdapter {
    
        public PagerAdapter(FragmentManager fm) {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int arg0) {
            switch (arg0) {
                case 0:
    
                    return new Fragment1();
    
                case 1:
    
                    return new Fragment2();
    
                default:
                    break;
            }
            return null;
        }
    
        @Override
        public int getCount() {
            return 2;
        }
    
    }
    
    public class Fragment1 extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
    
            return inflater.inflate(R.layout.activity_apps,container,false);
        }
    
    }
    
    public class Fragment2 extends Fragment {
    
            ViewPager viewpager;
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                     Bundle savedInstanceState) {
    
                return inflater.inflate(R.layout.activity_homescreen,container,false);
            }
        }
    
      public class MyFragment extends Fragment {
        @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser) {
              //hide view here
            }
            else {
            }
        }
    }