【问题标题】:my app crashed when I change webview size当我更改 webview 大小时,我的应用程序崩溃了
【发布时间】:2018-10-15 20:39:33
【问题描述】:

我构建了显示 webview 的应用程序。 当我更改 WebView 的大小时,我的应用程序崩溃了。

这是我的代码:

final WebView videoWebView = (WebView) findViewById(R.id.videoWebView);
    videoWebView.getSettings().setJavaScriptEnabled(true);
    videoWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    videoWebView.getSettings().setPluginState(PluginState.ON);
    videoWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
    videoWebView.setLayoutParams(layoutParams);

(此 webview 隐藏在应用程序的开头,当我显示他时应用程序崩溃) 你能帮助我吗?

非常感谢!

我的退出:

java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.FrameLayout$LayoutParams
at android.widget.FrameLayout.onMeasure(FrameLayout.java:186)
at android.view.View.measure(View.java:19759)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:911)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
at android.view.View.measure(View.java:19759)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6122)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
at android.view.View.measure(View.java:19759)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6122)
at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:393)
at android.view.View.measure(View.java:19759)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6122)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:19759)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6122)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
at android.view.View.measure(View.java:19759)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6122)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:690)
at android.view.View.measure(View.java:19759)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2313)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1400)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1649)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1288)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6359)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:873)
at android.view.Choreographer.doCallbacks(Choreographer.java:685)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:859)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6326)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)

【问题讨论】:

  • 请记录错误日志.....
  • 请显示 logcat 错误
  • 我认为你应该使用“WebView.LayoutParams layoutParams = new AbsoluteLayout.LayoutParams(mContext, AttributeSet);”
  • 在你必须这样做之前没有自己研究,这完全令人失望。

标签: java android webview


【解决方案1】:

试试这个

ViewGroup.LayoutParams newParams=videoWebView.getLayoutParams();
        newParams.height=30;
        newParams.width=30;
        videoWebView.setLayoutParams(newParams);

或者这个

FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(30, 30); 
videoWebView.setLayoutParams(layoutParams);

【讨论】:

  • @Fox 很乐意为您提供帮助
【解决方案2】:

在您的代码中将LinearLayout.LayoutParams 替换为FrameLayout.LayoutParams

 LinearLayout.LayoutParams layoutParams =  LinearLayout.LayoutParams(30, 30);

与:

FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(30, 30);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    相关资源
    最近更新 更多