我遇到了一个奇怪的问题: 我有一个从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会忽略我刚刚设置的布局参数吗?
答案 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);