Подтвердить что ты не робот

Отключить прокрутку между вкладками

Я установил скользящие вкладки с двумя Fragment, каждый Fragment имеет Button, который переходит в WebView. Проблема в том, что при нажатии WebView Button скользящие вкладки все еще активируются, и когда пользователь пытается перемещаться внутри WebView, вы в конечном итоге переходите на другую вкладку. Есть ли способ по щелчку, чтобы отключить возможность отслеживания вкладок? Любая помощь была бы чрезвычайно оценена!

Здесь код:

public class MyWebViewClass extends Fragment {

private WebView mWebView;
private Button mButton;

public MyWebViewClass() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_webview, container, false);

    mWebView = (WebView) view.findViewById(R.id.WebView);

    mButton = (Button) view.findViewById(R.id.Button1);
    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mWebView.setVisibility(View.VISIBLE);
            mButton.setVisibility(View.GONE);
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.loadUrl("www.google.com");
        }
    });

    return view;
}
4b9b3361

Ответ 1

Этот ответ может быть применен к любому ViewPager фактически независимо от того, какую библиотеку вы используете для реализации вкладок или даже обычного ViewPager без вкладок.

Библиотека, которую вы используете neokree/MaterialTabs, поддерживает ViewPager, который отвечает за эффект прокрутки, и вы можете отключить его, предоставив свой собственный ViewPager.

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;

/**
 * Created by hegazy on 2/13/15.
 */
public class CustomViewPager extends android.support.v4.view.ViewPager{
    private boolean enabled;

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.enabled = true;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return enabled ? super.onTouchEvent(event) : false;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        return enabled ? super.onInterceptTouchEvent(event) : false;
    }

    public void setPagingEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public boolean isPagingEnabled() {
        return enabled;
    }

}

Этот класс предоставляет ViewPager, который включен, и вы можете отключить его с помощью mViewPager.setPagingEnabled(false);

Нет упоминания о том, что вам нужно изменить макет xml на новый пользовательский ViewPager, а не на оригинальный.

<android.support.v4.view.ViewPager 
   ...
   />

к

<my.package.CustomViewPager 
   ...
   />

Ответ 2

Самый простой способ - setOnTouchListener и вернуть true для ViewPager.

оригинальный ответ: fooobar.com/info/18608/...