gpt4 book ai didi

java - Android 以编程方式向 Webview 添加边距

转载 作者:行者123 更新时间:2023-11-29 09:53:46 30 4
gpt4 key购买 nike

我需要以编程方式向 Web View 添加边距。我想做如下的事情:

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 中,例如LinearLayoutRelativeLayout。 (参见后代列表 http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html )。换句话说,WebView 本身不支持边距,但它的父级支持。

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

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

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

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

webView.setLayoutParams(p);

关于java - Android 以编程方式向 Webview 添加边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23519946/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com