我正在尝试将自定义 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 的底部边缘与目标的顶部边缘对齐。这是我的项目如何未按预期运行的屏幕截图。
屏幕顶部的绿色条是我尝试对齐的边框对象。正如您所看到的,它的左边缘与“board”对齐,但它位于屏幕顶部的错误位置。
最佳答案
您能否检查一下 board
和 Border
是否没有使用更多空间?例如,通过将背景设置为某种颜色来查看它们在屏幕中的尺寸?
也许board
(您提到的RelativeLayout
)比您想象的要大。
希望这有帮助
关于java - 只有部分布局参数有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5441208/