2013-04-02 83 views
1

我陷入了一个奇怪的问题: 我有一个从RelativeLayout扩展的类。忽略Android 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视图忽略了我刚刚设置的布局参数吗?

回答

1

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

我需要显式地设置不同的视图类似的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);