以编程方式添加webview

时间:2018-01-30 22:06:17

标签: java layout webview

通过单击按钮向我的布局添加Web视图没有问题,但是当我在创建主要活动时添加Web视图时,它什么也没做。我需要程序根据运行时存储的数据创建某些Web视图。当我把它放在onClick按钮中时,它确实让我完全相同的代码运行,但在main方法中它绝对没有任何效果。没有错误,没有任何错误。

    tickerLinearLayout = (LinearLayout) findViewById(R.id.TickerLinearLayout);

    currency = new WebView(this);
           currency.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, btcUp.getMeasuredHeight()));
           tickerLinearLayout.addView(currency);
           currency.getSettings().setJavaScriptEnabled(true);
           disableScroll(currency);

           currency.loadUrl("file:///android_asset/btc.html");

1 个答案:

答案 0 :(得分:0)

要在Activity中以编程方式创建Webview,首先必须将Webview添加到RelativeLayout中。我之所以选择RelativeLayout,是因为我的用例需要Webview有时不时位于父视图的不同位置。

public class CustomRelativeLayout extends RelativeLayout {

        private WebView mWebView;

        public CustomRelativeLayout(Context context) {
            super(context);
            mWebView = new WebView(context);
            mWebView.setId(View.NO_ID);
            mWebView.setScrollContainer(false);
            mWebView.loadData("<html><body>TEST</body></html>", "text/html", "utf-8");
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    context.getResources().getDisplayMetrics().widthPixels, context.getResources().getDisplayMetrics().heightPixels);
            params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
            mWebView.setLayoutParams(params);
            addView(mWebView);
        }

        public WebView getTheWebView() {
            return mWebView;
        }
    }

您可以修改CustomRelativeLayout类以接受URL。

在MainActivity类中,您将必须添加一个新的CustomRelativeLayout实例并将其添加到contentView中,如下所示:

setContentView(new CustomRelativeLayout(this)); 

要调整Webview的大小,请在添加到Webview的LayoutParams的宽度和高度中进行调整。

 RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                        <width>, <height>);