Android 以编程方式使用relativeLayout不适用于深层内部子级
我希望以编程方式使用RelativeLayout(由于一些与动态创建有关的原因,我无法使用xml布局)。但有一个问题,我似乎只能调整孩子与其他“直接”孩子的关系。请参见以下示例:Android 以编程方式使用relativeLayout不适用于深层内部子级,android,android-relativelayout,Android,Android Relativelayout,我希望以编程方式使用RelativeLayout(由于一些与动态创建有关的原因,我无法使用xml布局)。但有一个问题,我似乎只能调整孩子与其他“直接”孩子的关系。请参见以下示例: public class PView extends RelativeLayout { ... private void init(Context context) { int viewId = 1; LinearLayout center = new LinearLayout(context);
public class PView extends RelativeLayout {
...
private void init(Context context) {
int viewId = 1;
LinearLayout center = new LinearLayout(context);
center.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams topParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
topParams.gravity = Gravity.CENTER_HORIZONTAL;
frontRow = new LinearLayout(context);
frontRow.setOrientation(LinearLayout.HORIZONTAL);
TextView tmp1 = new TextView(context);
tmp1.setText("TEST TEXT1");
tmp1.setBackgroundColor(Color.GREEN);
frontRow.addView(tmp1);
center.setId(viewId++);
frontRow.setId(viewId++);
center.addView(frontRow,topParams);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(CENTER_IN_PARENT);
addView(center,params);
LayoutParams bLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
bLayoutParams.addRule(RelativeLayout.RIGHT_OF, frontRow.getId());
bImageView = new ImageView(context);
bImageView.setImageBitmap(someBitmap);
addView(bImageView,bLayoutParams);
}
这不起作用,ImageView双页面视图未定位在前排的右侧。但是如果我使用
bLayoutParams.addRule(RelativeLayout.RIGHT_OF, center.getId());
它显示在右侧(但显然与右侧组件无关)
到底发生了什么?
我并没有找到太多关于以编程方式创建RelativeLayout的信息。
RelativeLayout
的规则只适用于作为RelativeLayout
本身的直接子级的兄弟姐妹。您所观察到的情况正按设计/预期运行。Hm,这是非常不幸的,文档中是否有任何一点是我自己可以发现的。。。所以我必须将内部布局包装在另一个relativelayout中才能获得所需的功能?