Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式使用relativeLayout不适用于深层内部子级_Android_Android Relativelayout - Fatal编程技术网

Android 以编程方式使用relativeLayout不适用于深层内部子级

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);

我希望以编程方式使用RelativeLayout(由于一些与动态创建有关的原因,我无法使用xml布局)。但有一个问题,我似乎只能调整孩子与其他“直接”孩子的关系。请参见以下示例:

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中才能获得所需的功能?