Android以编程方式将边距添加到Webview

Pad*_*990 1 java android margins webview

我需要以编程方式将边距添加到webview.我想做类似下面的事情:

public void setSideMargin(final int sideMargin, int id) {
    WebView webView = (WebView) ((Activity) context)
            .findViewById(id);

    WebView.LayoutParams p = new WebView.LayoutParams(
            WebView.LayoutParams.MATCH_PARENT,
            WebView.LayoutParams.WRAP_CONTENT);

    p.leftMargin = sideMargin;
    p.rightMargin = sideMargin;

    webView.setLayoutParams(p);
}
Run Code Online (Sandbox Code Playgroud)

我知道这显然是错误的,但有什么我可以做的以编程方式添加边距吗?谢谢

njz*_*zk2 10

要理解的LayoutParams是:LayoutParams不依赖于它设置的元素,而是依赖于父元素.

它是父母关于元素定位的指示.

因此,如果你WebView在一个LinearLayout,getLayoutParams会得到你LinearLayout.LayoutParams.

这意味着,为了拥有MarginLayoutParam支持边距的LayoutParams 的后代,您的WebView必须放在ViewGroup支持边距的位置,例如LinearLayoutRelativeLayout.(参见后代列表http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html).换句话说,WebView它本身不支持保证金.

在这种情况下,您应该LayoutParams从中转换WebView为:

ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) webView.getLayoutParams();
Run Code Online (Sandbox Code Playgroud)

完成后,您可以修改边距:

p.leftMargin = sideMargin;
p.rightMargin = sideMargin;

webView.setLayoutParams(p);
Run Code Online (Sandbox Code Playgroud)