I moved from ViewPager
to ViewPager2
. Since there's no way to set a clickable callback to ViewPager2
or extend it to be clickable, I did this:
public class ViewPagerFragment extends Fragment {
ViewPager2 viewPagerTop;
ViewPager2Adapter viewPager2TopAdapter;
ClickableListener topClickableListener;
public interface ClickableListener {
public void on(int position);
public boolean onLong(int position);
}
public void setOnClickTop(ClickableListener clickableListener) {
topClickableListener = clickableListener;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_view_pager, container, false);
viewPagerTop = view.findViewById(R.id.viewPagerTop);
viewPagerTop.setOnLongClickListener(v -> {
Log.d("AAA", "long clicked!");
int position = viewPagerTop.getCurrentItem();
return topClickableListener.onLong(position);
});
viewPagerTop.setOnClickListener(v -> {
Log.d("AAA", "clicked!");
int position = viewPagerTop.getCurrentItem();
topClickableListener.on(position);
});
but it won't work. I see nothing on log.
After initialising the view add this yourPager.setUserInputEnabled(false); I face same issue by adding this line i am able to perform longClickAction on viewPager
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.