0

嘿伙计们,我遇到了一个小问题,我想通过代码创建一个 WebView。这是我想使用的代码。

WebView WVakten = new WebView(MainActivity.this);
                WVakten.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));
                WVakten.setVisibility(View.VISIBLE);
                WVakten.getSettings().setJavaScriptEnabled(true);
                WVakten.getSettings().setBuiltInZoomControls(true);
                WVakten.getSettings().setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
                WVakten.loadUrl("http://www.google.de");
                WVakten.setWebViewClient(new WebViewClient(){
                    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                        if (url != null && url.startsWith("http://")) {
                            view.getContext().startActivity(
                                new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                            return true;
                        } else {
                            return false;
                        }}});

但是当我尝试启动应用程序时,我只收到以下错误:

08-10 19:03:10.560: W/webcore(7134): 第一次布局后无法获取 viewWidth

但我根本不明白为什么我会收到这个错误。

4

2 回答 2

0

我认为您要么没有设置内容视图,要么没有将您的WebV输入代码添加iew到主布局中。如果 Webview 没有周围的布局,那么在 onCreate() 的代码末尾添加:

setContentView(WVakten);

在这种情况下,不需要 LayoutParams

如果您已经将内容视图设置为布局,那么您需要获取对该布局的引用并添加您的视图:

LinearLayout yourLayout = findViewById(R.id.something);
yourLayout.addView(WVakten);

在这种情况下,LayoutParams 将是必需的,并且必须是父布局的类型。因此,如果您WebView被 LinearLayout 包围,则必须使用

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(...);
于 2012-08-10T21:11:28.727 回答
0

解决这个问题的最简单方法是在 xml 文件中创建一个布局,并将 webview 添加到 onCreate 中的布局中。

例子:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:weightSum ="1.0"
android:layout_width="match_parent" android:layout_height="match_parent">    

<fragment
    android:id="@+id/article"
    android:layout_width="match_parent"
    android:layout_height="0px"
    android:layout_weight="0.90"
    class="nieuws.com.ArticleFragment" />
</LinearLayout>

在创建 ArticleFragment 时,您只需添加以下代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    m_webview = new WebView(getActivity());
    m_webview.getSettings().setJavaScriptEnabled(true);

    m_webview.setWebViewClient(new jWebViewClient());
    return m_webview;
 }

希望这可以帮助

碧玉

于 2012-08-10T20:19:56.363 回答