禁用选项卡之间的滑动 [英] Disable swiping between tabs

查看:26
本文介绍了禁用选项卡之间的滑动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我设置了带有两个 Fragment 的滑动标签,每个 Fragment 都有一个 Button,它转到一个 WebView.问题是当 WebView Button 被点击时,滑动标签仍然被激活,当用户试图在 WebView 中导航时,你会结束向上滑动到另一个标签.有没有办法在点击方法中禁用选项卡的滑动功能?任何帮助将不胜感激!

I set up sliding tabs with two Fragments each Fragment has a Button which goes to a WebView. The problem with this is when the WebView Button is clicked the sliding tabs are still activated and when a user tries to navigate within the WebView you end up swiping to the other tab. Is there a way in an on click method to disable the swiping ability of the tabs? Any help would be hugely appreciated!

代码如下:

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;
}

推荐答案

这个答案实际上可以应用于任何 ViewPager,无论您使用什么库来实现选项卡,甚至是没有选项卡的普通 ViewPager.

您使用的库 neokree/MaterialTabs 由负责滑动的 ViewPager 支持效果,您可以通过使用新的 ViewPager2 或提供您自己的自定义ViewPager.

The library you are using neokree/MaterialTabs is backed with a ViewPager that is responsible for the swiping effect and you can disable that by using the new ViewPager2 or providing your own custom ViewPager.

import android.annotation.SuppressLint
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.viewpager.widget.ViewPager

class CustomViewPager(context: Context, attrs: AttributeSet) : ViewPager(context, attrs) {

    var isPagingEnabled: Boolean = true

    @SuppressLint("ClickableViewAccessibility")
    override fun onTouchEvent(event: MotionEvent): Boolean {
        return isPagingEnabled && super.onTouchEvent(event)
    }

    override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
        return isPagingEnabled && super.onInterceptTouchEvent(event)
    }
}

这个类提供了一个启用滑动的ViewPager,你可以通过viewPager.isPagingEnabled = false

This class provides a ViewPager that is swiping enabled and you can turn it off by viewPager.isPagingEnabled = false

更不用说您必须将 XML 布局更改为新的自定义 ViewPager 而不是原始布局.

No to mention that you have to change the XML layout to your new custom ViewPager rather than the original one.

<androidx.viewpager.widget.ViewPager 
   ...
   />

<my.package.CustomViewPager 
   ...
   />

这篇关于禁用选项卡之间的滑动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆