2014-05-07 216 views
1

我需要以编程方式向webview添加边距。我想这样做如下:Android以编程方式将边距添加到Web视图

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); 
} 

这显然是错误的,但我知道有这样的事情,我可以做以编程方式添加的利润?由于

+0

那部分'((活动)范围内)'很奇怪,但否则我不会说“显然错误”,事实上这看起来对我来说很合适。 – njzk2

+0

好吧,它显然是错误的部分'((Activity)上下文)'如果因为我有一个Java类中的方法,所以我可以重用它在不同的活动 – Paddy1990

+0

我可能会喜欢做'p = webView.getLayoutParams()而不是为初学者创造一个。 – njzk2

回答

9

LayoutParams理解的事情是这样的:LayoutParams并不取决于它被设置为元素,但对家长。

这是给父母有关元素定位的指示。

因此,如果您的WebView是在LinearLayout,getLayoutParams会给你一个LinearLayout.LayoutParams

这意味着,为了有MarginLayoutParam后裔,支持利润率的LayoutParams,您的WebView必须放置在支持利润率ViewGroup,如LinearLayoutRelativeLayout。 (见后代列表http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html)。换句话说,WebView本身不支持页边距,它的父页。

在这种情况下,你应该投的LayoutParamsWebView到:

ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) webView.getLayoutParams(); 

一旦你有,你可以修改边距:

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

webView.setLayoutParams(p); 
+0

这是完美的,并按预期工作,谢谢你的帮助真的很感激它 – Paddy1990

-1

尝试使用此代码:

WebView.LayoutParams layoutParams = (WebView.LayoutParams) webView.getLayoutParams(); 
webView.layoutParams.leftMargin = sideMargin; 
webView.layoutParams.rightMargin = sideMargin; 
webView.setLayoutParams(layoutParams); 

如果不工作,然后采取的LinearLayout这种观点的家长和它插入填充。

示例代码:

LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) webView.getParent().getLayoutParams(); 
layoutParams.setMargins(sideMargin, 0, sideMargin, 0); 
((LinearLayout)webView.getParent()).setLayoutParams(layoutParams); 

二路示例代码:

LinearLayout webviewLayout = (LinearLayout) webView.getParent(); 
webviewLayout.setPadding(sideMargin,0,sideMargin,0); 
+0

无法将'LayoutParams'添加到webview – Paddy1990

+0

错误,请参阅我的评论。 (另外,不编译) – njzk2

+0

这看起来相当不错,我现在就试试看吧 – Paddy1990

相关问题