【发布时间】:2011-03-26 08:33:53
【问题描述】:
我正在尝试将自定义视图对象与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);
这给了我一个 Border 对象aligned_left 和我的RelativeLayout 但不是“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 属性让我如此困难?
编辑:
ABOVE 应该将一个视图的底部边缘与目标的顶部边缘对齐。这是我的项目未按预期工作的屏幕截图。
屏幕顶部的绿色条是我要对齐的边框对象。如您所见,它的左边缘与“board”对齐,但它位于屏幕顶部的错误位置。
【问题讨论】:
-
你能发一些截图吗?什么是“预期方式”和“在顶部但未按照应有方式对齐”?
-
我添加了屏幕截图并尝试更清楚地阐述。
-
您在哪个 Android 版本上进行测试?某些版本(主要是
标签: java android layout android-layout