android - 禁用标签之间的滑动

标签 android android-fragments android-tabs

我设置了带有两个 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;
}

最佳答案

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

您正在使用的库neokree/MaterialTabs由负责滑动效果的 ViewPager 支持,您可以使用新的 ViewPager2 禁用它。或提供您自己的自定义 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

将其关闭

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

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

<my.package.CustomViewPager 
   ...
   />

关于android - 禁用标签之间的滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503599/

相关文章:

java - 我的自定义适配器未在 fragment 中显示

Android 工具栏不从 Backstack 上的 fragment 调用 onOptionsItemSelected

android - Android 中的字符串 HTML

Fragment 中的 Android 选项卡布局

java - Android 的操作栏选项卡上是否可以有图标?

屏幕中间的android导航选项卡

Android:如何构建多级选项卡

android - 附近的连接和前台/后台服务

java - 带自定义适配器的 ListView 不加载标题数组,仅使用抽屉导航加载 0

android - 在 Kotlin 中无法 "findViewById"。收到错误 "Type inference failed"