如何在 android 中的片段内禁用和启用查看页布局按钮



在我的项目中,我创建了一个查看页器,在pageradapter中,我正在添加片段列表。我在查看页片段中有一个按钮。此按钮应仅在少数片段中显示和隐藏。这意味着当我在第一个片段中时,应该禁用该按钮。再次,当我滑动到第二个片段时,按钮应该启用。再次在第三个片段中,按钮应该启用。当我尝试禁用第一个片段中的按钮时,它在所有三个片段中都被禁用。任何人都可以告诉我如何解决这个问题。

Code:
public class ViewPagerFragment extends Fragment {
    TextView tv1,tv2,tvalue2,tv3, tvalue3,tv4,tvalue4;
    public static Button button1, button2;
    public static ViewPager pager;
    public static TabLayout tabLayout;
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //returning our layout file
        //change R.layout.yourlayoutfilename for each of your fragments
        View v = inflater.inflate(R.layout.pagerlayout, container, false);
        pager = (ViewPager)v.findViewById(R.id.viewPager);
        pager.setAdapter(new ViewPagerAdapter(getChildFragmentManager()));
        tabLayout = (TabLayout) v.findViewById(R.id.tab_layout);
        tabLayout.setupWithViewPager(pager, true);
        System.out.println("curent pagerrrr"+Integer.toString(pager.getCurrentItem()));
        tv1 = (TextView)v.findViewById(R.id.tv1);
        tv2 = (TextView)v.findViewById(R.id.tv2);
        tvalue2 = (TextView)v.findViewById(R.id.tvalue2);
        tv3 = (TextView)v.findViewById(R.id.tv3);
        tvalue3 = (TextView)v.findViewById(R.id.tvalue3);
        tv4 = (TextView)v.findViewById(R.id.tv4);
        tvalue4 = (TextView)v.findViewById(R.id.tvalue4);
        button1 = (Button) v.findViewById(R.id.btn1);
        button1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // do something
                button1.setVisibility(v.GONE);
                tv1.setVisibility(v.VISIBLE);
                tv2.setVisibility(v.VISIBLE);
                tvalue2.setVisibility(v.VISIBLE);
                tv3.setVisibility(v.VISIBLE);
                tvalue3.setVisibility(v.VISIBLE);
                tv4.setVisibility(v.VISIBLE);
                tvalue4.setVisibility(v.VISIBLE);
                button2.setVisibility(v.VISIBLE);
            }
        });
      return v;
    }
}
PagerAdapter
public class ViewPagerAdapter extends FragmentPagerAdapter {
    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }
    @Override
    public Fragment getItem(int pos) {
        switch(pos) {
            case 0: return Fragment1.newInstance("");
            case 1: return Fragment2.newInstance("");
            case 2: return Fragment3.newInstance("");
            default: return Fragment1.newInstance("");
        }
    }
    @Override
    public int getCount() {
        return 3;
    }
}

你可以像这样将侦听器添加到ViewPager.,并在onPageSelected的方法中更改按钮的状态。

 pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }
        @Override
        public void onPageSelected(int position) {
            if(position==0){
                button1.setEnabled(false);
            }else {
                button1.setEnabled(true);
            }
        }
        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
    pager.setCurrentItem(0);

最新更新