Android 如何让RelativeLayout在添加更多布局后相应地更改高度';谁的父母?

Android 如何让RelativeLayout在添加更多布局后相应地更改高度';谁的父母?,android,android-layout,android-linearlayout,android-relativelayout,Android,Android Layout,Android Linearlayout,Android Relativelayout,有人能帮我布置一下吗?我很难让它以我想要的方式显示 我有两个亲戚在一条直线上。RelativeLayout 1用于容纳片段,RelativeLayout 2包含“主”布局,在没有片段时应填充屏幕,但在添加片段时调整大小 我动态创建布局,如下所示: LinearLayout mainLayout = new LinearLayout(this); mainLayout.setLayoutDirection(LinearLayout.VERTICAL); unityPlay

有人能帮我布置一下吗?我很难让它以我想要的方式显示

我有两个亲戚在一条直线上。RelativeLayout 1用于容纳片段,RelativeLayout 2包含“主”布局,在没有片段时应填充屏幕,但在添加片段时调整大小

我动态创建布局,如下所示:

    LinearLayout mainLayout = new LinearLayout(this);
    mainLayout.setLayoutDirection(LinearLayout.VERTICAL);

    unityPlayerLayout = new RelativeLayout(this);
    youtubeLayout = new RelativeLayout(this);


    LinearLayout.LayoutParams mainParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);

    mainLayout.setLayoutParams(mainParams);


    RelativeLayout.LayoutParams youtubeLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,600);

    RelativeLayout.LayoutParams unityPlayerLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.MATCH_PARENT);
    unityPlayerLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);


    mainLayout.addView(youtubeLayout,0,youtubeLayoutParams);
    mainLayout.addView(unityPlayerLayout);
    unityPlayerLayout.addView(playerView,0,unityPlayerLayoutParams);
添加片段后,unityPlayerLayout不会调整大小并与底部对齐。它被推到右边,我可以看到几个像素,这很奇怪,因为youtubeLayout和mainLayout应该与屏幕匹配

因此,总结一下:在向youtubeLayout添加一个片段时,我需要unityPlayerLayout调整其高度并下降到底部,但实际上unityPlayerLayout会被推到右侧,而不会调整其高度


有人知道吗?非常感谢

您需要为主
线性布局设置
布局方向
,而不是方向

改变

mainLayout.setLayoutDirection(LinearLayout.VERTICAL);


谢谢是的,归结起来就是定向。
mainLayout.setOrientation(LinearLayout.VERTICAL);
// try this way,hope this will help you...
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout mainLayout = new LinearLayout(this);
        RelativeLayout unityPlayerLayout = new RelativeLayout(this);
        unityPlayerLayout.setBackgroundColor(getResources().getColor(android.R.color.holo_red_dark));
        RelativeLayout youtubeLayout = new RelativeLayout(this);
        youtubeLayout.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light));

        mainLayout.setOrientation(LinearLayout.VERTICAL);
        mainLayout.addView(youtubeLayout,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,600));
        mainLayout.addView(unityPlayerLayout,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,0,1f));
        setContentView(mainLayout,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
    }