以编程方式使用 AddView 时奇怪的上边距
Posted
技术标签:
【中文标题】以编程方式使用 AddView 时奇怪的上边距【英文标题】:Weird top margin when using AddView programmatically 【发布时间】:2014-07-04 08:15:19 【问题描述】:我遇到了一个大问题,我正在尝试以编程方式添加 Imageview,但我遇到了一个奇怪的问题:
我在 XML 中只放入了一个与父级匹配的空相对布局。 代码方面,我在相对布局中添加了一个 imageview。
一切正常,图像视图可见且大小正确,但问题是“0,0”位置很奇怪。似乎它有一个上边距,而左边距正确地为 0。同样使用 SetX/SetY 将位置强制为“0,0”会导致这个奇怪的上边框:
图片:
代码:
base_layout = (RelativeLayout) findVieById(R.id.base_layout);
image_logo = New Imageview(this);
base_layout.AddView(image_logo);
image_logo.SetPadding(0,0,0,0);
image_logo.SetX(0);
image_logo.SetY(0);
image_logo.SetImageResource(R.drawable.generic_image);
image_logo.SetVisibility(View.VISIBLE);
我不明白为什么......清单中的活动有它通常的 Theme.NoTitleBar.Fullscreen 标志。
有什么帮助吗?将不胜感激!
【问题讨论】:
要快速获得有用的答案(并使您的问题更有帮助),请向我们展示您在代码中所做的工作,以便我们了解正在发生的事情。 您是否尝试将RelativeLayout
元素的填充设置为0?
嗨,我已经编辑了帖子。
嗨鲁迪,感谢您的快速回复。即使填充 0, 0, 0, 0 也不会显示该边框。我认为这与标题栏有关,但我不明白……使用 xml 效果很好。
您确定顶部的微小间隙不仅仅是电池寿命/无线信号和通知所在的栏吗?
【参考方案1】:
我使用RelativeLayout.LayoutParams
编写了一个示例并自己尝试了一下,一切似乎都运行良好。
base_layout = (RelativeLayout) findViewById(R.id.base_layout);
ImageView image_logo = new ImageView(this);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(width, height);
image_logo.setLayoutParams(lp);
base_layout.addView(image_logo);
上图运行时效果如下。
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
已在清单中针对此 Activity
使用。
【讨论】:
使用全屏清单标志实际上隐藏了通知栏,但我不确定布局坐标是否也会受到影响。您认为添加以下内容会解决我的问题吗? getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);以上是关于以编程方式使用 AddView 时奇怪的上边距的主要内容,如果未能解决你的问题,请参考以下文章