优化java / XML中的代码 - Android开发

时间:2011-10-06 20:25:33

标签: android optimization android-layout

我有一些以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 ...任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

很抱歉不清楚你在这里想做什么?您只是想在屏幕中央设置一个垂直的按钮列表吗?为什么不将ViewGroup的重力设置为center