我有一些以RelativeLayout
格式布局的按钮,我想把最后一个按钮放在第二个按钮的正下方,但也放在屏幕中间。最初,当我的按钮是一个在另一个下面时,我的XML文件看起来有点像这样:
//一些按钮
<Button
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/ok"
android:layout_marginLeft="5dip"
android:layout_below="@id/entry"
android:text="Cancel" />
<Button
android:id="@+id/pickdate"
android:layout_width="100dip"
android:layout_height="40dip"
android:layout_below="@id/cancel"
android:layout_marginTop="25dip"
android:layout_marginLeft="30dip"
android:text="Set Date" />
但是当我想将“设置日期”按钮(最后一个)的LeftMargin
设置为"width of screen" / 2
时,我必须使用Java编写代码,使用getWindowManager.getDefaultDisplay()
获取宽度。但是在执行它时,似乎为最后一个按钮定义的XML属性(仅限布局参数)都被忽略了。我想那是因为java代码在XML之后解析,它覆盖了XML中定义的行为。我不得不在Java src文件本身中设置所有布局属性。这是Java代码:
Display display = getWindowManager().getDefaultDisplay();
int w = display.getWidth();
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(w/2, 25, 0, 0);
params.width = 200;
params.height = 50;
params.addRule(RelativeLayout.BELOW, R.id.cancel);
datepick.setLayoutParams(params);
仅适用于一个属性。我必须在Java中设置所有属性。有没有办法解决 ?类似于在XML中引用我的变量w
...任何建议都会有所帮助。
答案 0 :(得分:0)
很抱歉不清楚你在这里想做什么?您只是想在屏幕中央设置一个垂直的按钮列表吗?为什么不将ViewGroup的重力设置为center
?