Android设置布局以编程方式对齐左侧和中间垂直

时间:2016-11-01 21:35:35

标签: java android

我想在arrowview左侧中心垂直方向上homeview重叠。我尝试使用views几个但是没有用。它显示重叠但在左上角而不是左中心垂直。请帮帮我。

private RelativeLayout makeContentView1() {
    RelativeLayout arrowView = new RelativeLayout(this);
    arrowView.setBackgroundResource(R.drawable.image);
    //RelativeLayout.LayoutParams relativeParams = (RelativeLayout.LayoutParams)arrowView.getLayoutParams();
    //relativeParams.setMargins(0, 80, 0, 0);
    //arrowView.setLayoutParams(relativeParams);
    arrowView.setGravity(RelativeLayout.CENTER_VERTICAL | RelativeLayout.ALIGN_LEFT);
    return arrowView;

}

public void makeLayout() {
    homeView = new RelativeLayout(this);
    LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

    homeView.setLayoutParams(lp);

    bodyView = this.makeBodyView();
    arrowView = this.makeContentView1(300,300);

    homeView.addView(bodyView);
    homeView.addView(arrowView);

    return homeView;

}

1 个答案:

答案 0 :(得分:0)

您可以使用单个RelativeLayout并对其应用规则来执行您的任务, 使用以下代码来实现此目的,

private RelativeLayout makeContentView1() {
    RelativeLayout arrowView = new RelativeLayout(this);
    arrowView.setBackgroundResource(R.drawable.image);


    return arrowView;
}

public void makeLayout() {
    homeView = new RelativeLayout(this);
    LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.MATCH_PARENT);

    homeView.setLayoutParams(lp);

    bodyView = this.makeBodyView();
    arrowView = this.makeContentView1(300,300);

    homeView.addView(bodyView);
    homeView.addView(arrowView);

    RelativeLayout.LayoutParams relativeParams =       (RelativeLayout.LayoutParams)arrowView.getLayoutParams();
    relativeParams.addRule(RelativeLayout.CENTER_VERTICAL);
    arrowView.setLayoutParams(relativeParams);
return homeView;

}