2012-10-29 73 views
0

layout1由顶部的状态栏和屏幕底部的工具栏组成。它在xml中定义。 我想通过编程在layout1的状态栏和工具栏之间放置layout2。如何以编程方式将布局放置在屏幕中央?

setContentView(R.layout.layout1); 
layout2 = new MyLayout(this); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
params.leftMargin = 0; 
params.addRule(RelativeLayout.BELOW, R.id.statusbar); // this does not work. 
addContentView(layout2, params); 

此代码在屏幕的顶部把布局2所以它隐藏布局1的状态栏。如何将layout2放置在我想要的位置? 有没有其他的方式不使用addContentView?

回答

0

以编程方式在线性布局中设置重力。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
     LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

    params.gravity = Gravity.CENTER; 
+0

它不起作用。这是相同的。我认为使用addContentView无法做到这一点。没有其他方式不使用addContentView? – user1301568

+0

尝试在其他布局中使用setLayoutParams。 –

+0

我会再试一次。那么,如何将layout2放置在layout1的状态栏的下方?假设状态栏高度为100像素。 – user1301568

2
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

params.gravity = Gravity.CENTER; 

我想这项工作。

+0

我会再试一次。那么,如何将layout2放置在layout1的状态栏的下方?假设状态栏高度为100像素。 – user1301568

+0

params.addRule(RelativeLayout.BELOW,R.id.statusbar)不起作用。 – user1301568

相关问题