gpt4 book ai didi

Android setLayerType 网页 View

转载 作者:太空狗 更新时间:2023-10-29 15:31:25 25 4
gpt4 key购买 nike

我正在尝试使用以下代码动态创建 WebView:

mWebView = new WebView(this);
mWebView.setId(R.id.webview);
mWebView.setVerticalScrollBarEnabled(false);

mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

mWebView.setHorizontalScrollBarEnabled(false);
mWebView.setWebViewClient(mWebViewClient);
mWebView.setWebChromeClient(mWebChromeClient);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);

但是,当我运行该程序时,我的应用程序强制退出并指出没有“setLayerType”这样的方法。但是,当我通过 xml 创建 Webview 时,似乎没有问题:

<WebView android:id="@+id/webview"
android:scrollbars="none"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layerType="software" />

我在这里使用了“layertype”属性,应用程序运行良好。有人可以解释差异吗?有没有办法动态设置WebView的图层类型?

最佳答案

老问题,但无论如何都要回答,以防其他人发现它:

可以通过反射调用setLayerType。这样代码将独立于操作系统版本运行。

try {
Method setLayerTypeMethod = mWebView.getClass().getMethod("setLayerType", new Class[] {int.class, Paint.class});
setLayerTypeMethod.invoke(mWebView, new Object[] {LAYER_TYPE_SOFTWARE, null});
} catch (NoSuchMethodException e) {
// Older OS, no HW acceleration anyway
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}

关于Android setLayerType 网页 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781655/

25 4 0
文章推荐: c - 每次调用 printf() 是否创建一个新的内部缓冲区,或者所有后续调用都使用与第一个相同的缓冲区?
文章推荐: javascript -