Android RelativeLayout params被忽略了

时间:2013-04-02 09:31:58

标签: android relativelayout android-custom-view

我遇到了一个奇怪的问题: 我有一个从RelativeLayout扩展的类。

然后我想以这种方式添加两个视图:

mButtonTip = new ButtonTip(context, attrs);
mToolTip = new ToolTip(context, attrs);

RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params1.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);

RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params2.addRule(RelativeLayout.ALIGN_BOTTOM, mToolTip.getId());

addView(mToolTip, params1);
addView(mButtonTip, params2);

不幸的是,mToolTip视图已正确放置,但mButtonTip不会从布局的左下角移动。

你知道为什么mButtonTip View会忽略我刚刚设置的布局参数吗?

1 个答案:

答案 0 :(得分:1)

好吧,所以对于那些可能会遇到同样问题的人,我找到了一个解决方案:

我需要明确设置不同View的id:

mButtonTip = new ButtonTip(context, attrs);
mButtonTip.setId(1);

mToolTip = new ToolTip(context, attrs);
mToolTip.setId(2);

RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params1.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);

RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params2.addRule(RelativeLayout.ALIGN_BOTTOM, mToolTip.getId());

addView(mToolTip, params1);
addView(mButtonTip, params2);