我的应用内有Fragment
,其中包含ViewPager
。我有一个String
变量代码。如果code
等于“NBG”,我想停用ViewPager
的滑动。
public class CurrencyFragment extends BaseFragment {
@Override
public View onCreateView(final LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_currency_layout, container, false);
mViewpager = (ViewPager) view.findViewById(R.id.Detailpager);
Bundle bundle = getArguments();
if (bundle != null) {
code = object.getCode();
}
if (code.equals("NBG")) {
CustomViewPager pager = new CustomViewPager(getActivity(), null);
pager.setPagingEnabled(false);
}
return view;
};
public class CustomViewPager extends ViewPager {
private boolean enabled;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onTouchEvent(event);
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onInterceptTouchEvent(event);
}
return false;
}
public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
}
}
答案 0 :(得分:2)
你正在使用两个不同的ViewPager
。使用ViewPager
初始化的View.findViewById
与CustomViewPager
时创建的code.equals(NBG)
不同。
在fragment_currency_layout
而不是android.support.v4.view.ViewPager
,使用path_to_CustomViewPager
。然后拨打mViewpager.setPagingEnabled
而不是pager.setPagingEnabled
。
答案 1 :(得分:2)
mViewpager = (ViewPager) view.findViewById(R.id.Detailpager);
在您声明ViewPager的XML布局中,您应该声明您的CustomViewPager。 CustomViewPager需要在自己的文件中。
目前,您正在实例化常规ViewPager(我假设您没有提供XML代码)。然后你做:
CustomViewPager pager = new CustomViewPager(getActivity(), null);
pager.setPagingEnabled(false);
但这是您实例化的额外ViewPager,与您屏幕上的任何UI无关。