【问题标题】:Only some Layout Params work只有一些布局参数有效
【发布时间】: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


【解决方案1】:

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

也许board,你提到的RelativeLayout 比你想象的要大。

希望对你有帮助

【讨论】:

    【解决方案2】:

    我通过使用 ImageView 而不是我的自定义 Border 类(基本上只是从资源绘制到画布的位图)解决了我的问题。我的代码现在看起来像这样:

    int bored = board.getId(); //board is the RelativeLayout
    ImageView border = new ImageView(this);
    border.setImageResource(R.drawable.border_tiki1);
    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);
    

    我最好的猜测是它在为我的自定义对象定义 ABOVE 常量时遇到了问题。感谢所有花时间查看此内容的人。这是我现在的视图:

    从这个锚点开始,我将用其他小块构建其余的边界。再次感谢!

    【讨论】:

      【解决方案3】:

      在没有看到其余代码的情况下,这只是一个猜测,但是创建对象的顺序会影响对象的布局方式。尤其是在相对布局方面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多