嘿伙计们我有点问题我想通过代码创建一个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
但我只是不明白为什么我会收到这个错误。
答案 0 :(得分: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;
}
希望这有帮助
碧玉
答案 1 :(得分:0)
我认为您要么未设置内容视图,要么未在此处WebV
将iew
输入代码添加到主布局中。
如果Webview没有周边布局,那么在onCreate()的代码末尾添加:
setContentView(WVakten);
在这种情况下,LayoutParams不是必需的
如果您已将内容视图设置为布局,则需要获取对该布局的引用并添加视图:
LinearLayout yourLayout = findViewById(R.id.something);
yourLayout.addView(WVakten);
在这种情况下,LayoutParams将是必需的,并且必须是父Layout的类型。因此,如果您的WebView
被LinearLayout包围,则必须使用
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(...);