书到用时方恨少,事非经过不知难。这篇文章主要讲述Android WebView在不同的标签中相关的知识,希望能为你提供帮助。
我正在开发一个带有“android.support.v4.view.ViewPager”的项目。有两个选项卡,在每个选项卡中,我想显示不同的WebView。以下是其中一个选项卡的代码及其布局:
tab one.java
public class TabOne extends Fragment
{
WebView myWebView;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.tabone, container, false);
WebView myWebView = (WebView) view.findViewById(R.id.webview);
myWebView.loadUrl("file:///android_asset/help/index.html");
return view;
}
}
tabone.xml
<
?xml version="1.0" encoding="utf-8"?>
<
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<
WebViewxmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<
/LinearLayout>
问题是在第一个选项卡中,WebView是corectly加载的。在另一个Tab上,这是完全相同的声明,我无法集中元素,有时我会得到一些强制关闭。如果我在第二个选项卡上,有错误,我将方向切换为横向,第二个选项卡完全加载,但当我切换到第一个选项卡时,我得到错误。这是LogCat错误:
11-18 09:00:37.460: E/webcoreglue(29444): Should not happen: no rect-based-test nodes found
答案这似乎是在Android 4.1上的a bug, either in
ViewPager
or WebView
(也许更高)。唉,我没有办法让
WebView
在寻呼机的第二页或后续页面上。另一答案在Java中,将MyWebView创建为WebView的子类
public class MyWebView extends WebView {public MyWebView(Context context) {
super(context);
}public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}@Override
public boolean onTouchEvent(MotionEvent event) {
onScrollChanged(getScrollX(), getScrollY(), getScrollX(), getScrollY());
return super.onTouchEvent(event);
}
}
在布局xml中,使用MyWebView而不是WebView
<
your.package.MyWebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
另一答案我在
WebView
内部有ViewPager
并通过扩展onTouchEvent()
类来覆盖WebView
来解决这个问题。这是我的代码:
@Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) {
requestFocusFromTouch();
} return super.onTouchEvent(event);
}
【Android WebView在不同的标签中】干杯!
推荐阅读
- 在android中上传文件和其他字符串参数
- 从页面操作中获取标签网址(WebExtensions,Android)
- Android日历以字符串[复制]获取当前星期几
- 如何在应用程序超时时重新启动Coldfusion Application Server()
- Xamarin UITest - 确定设备是适用于Android的手机还是平板电脑()
- Apple App如何获得YouTube授权
- Android WebView从资源原始文件夹加载html文件
- Xamarin Android(为什么重写OnSaveInstanceState永远不会被调用())
- Xamarin Android通过一种风格控制文本颜色