我试图在viewPager的最后一页上显示一个按钮(其中包含片段中的图像)。在这些片段中,我创建了一个在显示最后一页之前不可见的按钮。到目前为止,我已经实现了这种行为,但我有一个错误,在第2页出现按钮,即使我显示"显示" (使用 setVisibility(View.VISIBLE))仅当当前页面大于或等于3时才按钮(总共有5页,并且因为viewPager.getCurrentItem(大于或等于3) )表现奇怪并且不会将最后一页或第一页计为索引)。
我的自定义片段 onCreateView()如下所示:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.imageview, container, false);
ivImage = (ImageView) root.findViewById(R.id.ivImageView);
btn_register = (Button) root.findViewById(R.id.button_register);
if( ((WelcomeActivity) this.getActivity()).test()>=3){
btn_register.setVisibility(View.VISIBLE);
}
setImageInViewPager();
return root;
}
在我的主要活动中, test()方法只返回viewPager所在的当前页面:
public int test(){
return(viewPage.getCurrentItem());
}
我怎样才能更好地检测viewpager的最后一页并使用它,以便我只在用户位于viewpager的最后一页时显示按钮?谢谢!
修改 这是问题的video。 以下是我的 src 文件夹的内容:WelcomeActivity.java,FragmentPagerAdapter.java,Images.java,FragmentImageView.java。
答案 0 :(得分:0)
在onPageSelected()中,检查位置:if(position == 5)然后显示按钮。在这里我用过 5因为你提到有5页。
@Override
public void onPageSelected(int position) {
if(position == 5)
btn_register.setVisibility(View.VISIBLE);
}
试试这个希望它会对你有所帮助:)。
答案 1 :(得分:0)
您需要以某种方式将片段数量与各个片段联系起来。这样每个片段都知道它的索引。您可以添加代码,了解如何以及何时创建/添加片段到view-pager?
基于此,您可以向参数包添加一个参数,同时通过片段初始化片段,在视图分页器中知道它的索引。
或者试试这个,
private int mCurrentPageSelected;
// In your activity
@Override
public void onPageSelected(int position) {
mCurrentPageSelected = position;
}
public int getSelectedPagePosition(){
return mCurrentPageSelected;
}
// In your fragment
public void onAttach(){
Log.d(TAG, "Fragment attached and current selected position is" + etActivity().getSelectedPagePosition());
if(getActivity().getSelectedPagePosition() >= 3){
// show the btn
btn_register.setVisibility(View.VISIBLE);
}else{
//hide the button
btn_register.setVisibility(View.GONE);
}
}