Dar*_*rty 37 android android-fragments android-tabs
我设置了两个Fragments的滑动标签,每个标签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;
}
Run Code Online (Sandbox Code Playgroud)
Ahm*_*azy 76
无论您使用什么库来实现选项卡,甚至是没有选项卡的普通ViewPager,这个答案都可以应用于任何ViewPager.
您使用neokree/MaterialTabs的库由ViewPager支持,该ViewPager负责滑动效果,您可以通过提供自己的自定义ViewPager来禁用它.
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
public class CustomViewPager extends ViewPager {
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
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) {
return enabled && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return enabled && super.onInterceptTouchEvent(event);
}
public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
}
public boolean isPagingEnabled() {
return enabled;
}
}
Run Code Online (Sandbox Code Playgroud)
此类提供了一个启用了滑动的ViewPager,您可以将其关闭 viewPager.setPagingEnabled(false);
更不用说你必须将XML布局更改为新的自定义ViewPager而不是原始的.
<android.support.v4.view.ViewPager
...
/>
Run Code Online (Sandbox Code Playgroud)
至
<my.package.CustomViewPager
...
/>
Run Code Online (Sandbox Code Playgroud)
Ben*_*Ben 11
科特林:
使用 ViewPager2...
viewPager.isUserInputEnabled = false
Run Code Online (Sandbox Code Playgroud)
在选项卡之间滑动被禁用,用户仍然可以点击顶部的选项卡在选项卡之间切换。
| 归档时间: |
|
| 查看次数: |
31548 次 |
| 最近记录: |