我需要以编程方式向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);
}
我知道这显然是错误的,但是我可以通过编程方式添加边距吗?谢谢
最佳答案
LayoutParams
需要理解的是:LayoutParams
并不依赖于它所设置的元素,而是依赖于父元素。
这是关于元素位置的指示。
因此,如果您的WebView
位于LinearLayout
中,则getLayoutParams
将为您提供LinearLayout.LayoutParams
。
这意味着,要使后代MarginLayoutParam
具有支持边距的LayoutParams,则必须将WebView放在支持边距的ViewGroup
中,例如LinearLayout
或RelativeLayout
。 (请参阅后代http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html列表)。换句话说,WebView
本身不支持边距,而其父级则支持。
在这种情况下,应将LayoutParams
从WebView
强制转换为:
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) webView.getLayoutParams();
一旦有了,就可以修改边距:
p.leftMargin = sideMargin;
p.rightMargin = sideMargin;
webView.setLayoutParams(p);