在 CustomPagerAdapter 中隐藏按钮

Hide Button in CustomPagerAdapter

我编写了以下自定义 ViewPager 适配器:

public class CustomPagerAdapter extends PagerAdapter {

private int[] image_resources = {
        android.R.color.transparent,
        R.drawable.1,
        R.drawable.2,
};
private Context ctx;
private LayoutInflater layoutInflater;
public CustomPagerAdapter(Context ctx) {
    this.ctx = ctx;
}

@Override
public int getCount() {
    return image_resources.length;
}

@Override
public boolean isViewFromObject(View view, Object o) {
    return (view == (RelativeLayout) o);
}

@Override
public CharSequence getPageTitle(int position) {
    String[] titlesArray = {
            "",
            "Image 1",
            "Image 2",
    };

    return titlesArray[position];
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View item_view = layoutInflater.inflate(R.layout.pager_item, container, false);
    ImageView imageview = (ImageView) item_view.findViewById(R.id.image_view);
    imageview.setImageResource(image_resources[position]);
    container.addView(item_view);
    return item_view;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((RelativeLayout) object);
}
}

我在另一个 class 中设置了 Adapter:

private void init(Context context) {
    View view = inflate(context, R.layout.listview_item, this);
    view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

    ViewPager viewPager;
    CustomPagerAdapter adapter;
    viewPager = (ViewPager) findViewById(R.id.view_pager);
    adapter = new CustomPagerAdapter(context);

    PagerAdapter wrappedAdapter = new InfinitePagerAdapter(adapter);
    viewPager.setAdapter(wrappedAdapter);

    //Hide the button unless showing image
    Button selectButton = (Button) findViewById(R.id.selectButton);
    selectButton .setVisibility(GONE);
}

我如何隐藏 ViewPager 的第一个 "slide" 上的按钮,即图像 android.R.color.transparent 的位置,但每隔一张幻灯片显示它?

您必须像这样在寻呼机上使用 onPageChangeListener 并通过检查寻呼机当前页面的位置来隐藏按钮。

    pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {

           if(position == position of the page you want to hide button)
            {
                button.setVisibility(View.INVISIBLE);
            }else{
                 button.setVisibility(View.VISIBLE);
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

您可以将 OnPageChangeListener 添加到 ViewPager 以获得页面更改的通知。在最基本的形式中,根据当前页面切换按钮的可见性看起来有点像这样:

viewPager.addOnPageChangeListener(new SimpleOnPageChangeListener() {
    @Override public void onPageSelected(int position) {
        selectButton.setVisibility(position == 0 ? View.GONE : View.VISIBLE);
    }
});

注意:我使用 SimpleOnPageChangeListener 是为了只需要覆盖我感兴趣的内容。

我无法完全理解您的问题,但我相信这应该可以解决您的问题:

private void init(Context context) {
    View view = inflate(context, R.layout.listview_item, this);
    view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

    ViewPager viewPager;
    CustomPagerAdapter adapter;
    viewPager = (ViewPager) findViewById(R.id.view_pager);
    adapter = new CustomPagerAdapter(context);

    PagerAdapter wrappedAdapter = new InfinitePagerAdapter(adapter);
    viewPager.setAdapter(wrappedAdapter);

    //Hide the button unless showing image
    final Button selectButton = (Button) findViewById(R.id.selectButton);
    selectButton .setVisibility(GONE);

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
             if(position==0)
                selectButton.setVisibility(View.GONE);
             else
                selectButton.setVisibility(View.VISIBLE);
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });


}