繁体   English   中英

如何以编程方式将相对布局中的视图与最左,最中和最右对齐?

[英]How to align views in a relative layout to far left, center, and far right programmatically?

我有一个相对的布局,具有两个按钮和一个textview。 我想发生的事情是在最左侧有一个按钮,在中央有textview,在最右侧有另一个按钮。 尝试在没有XML的情况下执行此操作。

这是我的代码:

        RelativeLayout fm = new RelativeLayout(this);
        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        fm.setLayoutParams(lp);
        fm.setBackgroundColor(Color.CYAN);

        Button done = new Button(this);
        done.setId(10);
        done.setText("Done");

        Button save = new Button(this);
        save.setId(12);
        save.setText("Save");

        TextView formManager = new TextView(this);
        formManager.setId(11);
        formManager.setText("Form Manager");

        lp.addRule(RelativeLayout.CENTER_IN_PARENT);
        fm.addView(formManager, lp);

        lp.removeRule(RelativeLayout.CENTER_IN_PARENT);

        lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        fm.addView(done, lp);

        lp.removeRule(RelativeLayout.ALIGN_PARENT_LEFT);

        lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        fm.addView(save, lp);

        lp.removeRule(RelativeLayout.ALIGN_PARENT_RIGHT);

        mainLayout.addView(fm);

问题是...保存按钮会拉伸并占据整个布局,而且非常细。 基本上,使用此代码不会像我想的那样发生任何事情。 关于如何实现这一目标的任何想法?

尝试这种方式

  LinearLayout mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
    RelativeLayout fm = new RelativeLayout(this);
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    fm.setLayoutParams(lp);
    fm.setBackgroundColor(Color.CYAN);

    Button done = new Button(this);
    done.setId(10);
    done.setText("Done");

    Button save = new Button(this);
    save.setId(12);
    save.setText("Save");

    TextView formManager = new TextView(this);
    formManager.setId(11);
    formManager.setText("Form Manager");

    RelativeLayout.LayoutParams lpp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    formManager.setLayoutParams(lpp);
    lpp.addRule(RelativeLayout.CENTER_IN_PARENT);
    fm.addView(formManager, lpp);

    RelativeLayout.LayoutParams doneLayoutParams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    done.setLayoutParams(doneLayoutParams);
    doneLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
    fm.addView(done, doneLayoutParams);

    RelativeLayout.LayoutParams saveLayoutParams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    save.setLayoutParams(saveLayoutParams);
    saveLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    fm.addView(save, saveLayoutParams);


    mainLayout.addView(fm);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM