java - 只有部分布局参数有效

标签 java android layout android-layout

我正在尝试将自定义 View 对象与RelativeLayout 的aligned_left 对齐。我的(截取的)代码看起来像这样:

int bored = board.getId(); //board is the RelativeLayout
Border border = new Border();
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_LEFT, bored);
params.addRule(RelativeLayout.ABOVE, bored);
this.addView(border,params);

这给了我一个与我的RelativeLayout对齐的Border对象,但不是“ABOVE”(从技术上讲,它位于它的上方,但它位于屏幕的顶部,没有按照应有的方式对齐)。而且,更奇怪的是,当我这样做时:

int bored = board.getId();
Border border = new Border();
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_LEFT, bored);
params.addRule(RelativeLayout.BELOW, bored); //<---The only difference
this.addView(border,params);

...它工作得很好。它按照预期的方式向左和下方对齐。为什么上述属性让我如此困难?

编辑:
ABOVE 应该将一个 View 的底部边缘与目标的顶部边缘对齐。这是我的项目如何未按预期运行的屏幕截图。
enter image description here

屏幕顶部的绿色条是我尝试对齐的边框对象。正如您所看到的,它的左边缘与“board”对齐,但它位于屏幕顶部的错误位置。

最佳答案

您能否检查一下 boardBorder 是否没有使用更多空间?例如,通过将背景设置为某种颜色来查看它们在屏幕中的尺寸?

也许board(您提到的RelativeLayout)比您想象的要大。

希望这有帮助

关于java - 只有部分布局参数有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5441208/

相关文章:

java - 我可以在构造中设置默认参数值吗?

java - Java 新手 : Constructor error control

android - mainActivity 找不到 Ionic 4 电容视频播放器插件

android - Camera2 可以连续访问相机预览图像

javascript - 有什么办法可以强制 Chrome 准确呈现分数像素字体大小?

android - Viewpager 变得太高

java - 依赖 DAOFactory 的 DAO 的优点和缺点

java - 安卓客户端 : Can't create handler inside thread that has not called Looper. prepare()

java - 有没有办法让这个脉冲数无限大?

java - 禁止在 FlowLayout 中使用多行?