有些人可以帮我解决布局问题吗?我有问题让它显示我喜欢的方式。
我在线性布局中有两个相对布局。 RelativeLayout 1用于容纳一个片段,RelativeLayout 2包含'main'布局,当没有片段时它应填充屏幕,但在添加片段时调整大小。
我动态创建布局:
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会被推到右边,并且不会调整它的高度。
任何人都有任何想法?非常感谢!
答案 0 :(得分:1)
您需要为主Layout orientation
设置LinearLayout
,而不是方向
更改
mainLayout.setLayoutDirection(LinearLayout.VERTICAL);
到
mainLayout.setOrientation(LinearLayout.VERTICAL);
答案 1 :(得分:0)
// 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));
}