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