用代码实现相对布局(不显示xml文件)

相对布局RelativeLayout

android.widget.RelativeLayout.LayoutParams 有一个构造函数:

RelativeLayout.LayoutParams(int w, int h),参数指定了子 View 的宽度和高度,这一点和其父类是一样的。

而实现相对布局的关键在它的 两个 addRule 方法上。anchor 参数指定可以是 View 的 id(“相对于谁”)、

RelativeLayout.TRUE(启用某种对齐方式) 或者 是-1(应用于某些不需要 anchor 的 verb);

AddRule 方法的 verb 参数指定相对的“动作:

 ALIGN_BOTTOM、ALIGN_LEFT、 ALIGN_RIGHT、 ALIGN_TOP: 本 View 的 底边/左边/右边/顶边 和 anchor 指定的 View 的 底边/左边/右边/顶边 对齐。

 ALIGN_WITH_PARENT_BOTTOM 、ALIGN_WITH_PARENT_LEFT 、 ALIGN_WITH_PARENT_RIGHT 、 ALIGN_WITH_PARENT_TOP :

和上面一组常量类似,只不过不需要再指定 anchor, 其 anchor 自动为 Parent View。

 CENTER_HORIZONTAL、CENTER_IN_PARENT 、CENTER_VERTICAL : 如果 anchor 为 TRUE,在 Parent 中 水平居中/水平和垂直均居中/垂直居中。

 POSITION_ABOVE 、POSITION_BELOW 、 POSITION_TO_LEFT 、POSITION_TO_RIGHT : 本 View 位于 anchor 指定的 View 的 上边/下边/左边/右边。

相关代码:

package com.farproc.RLTest;

import android.app.Activity;
 import android.os.Bundle;
 import android.widget.*;
 import android.view.*;

public class RLTest extends Activity {
    
     private RelativeLayout rl;
    
     private Button btn1;
     private Button btn2;
     private Button btn3;
     private Button btn4;
    
     private static final int ID_BTN1 = 1;
     private static final int ID_BTN2 = 2;
     private static final int ID_BTN3 = 3;
     private static final int ID_BTN4 = 4;
    
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
        
         rl = new RelativeLayout(this);
        
         btn1 = new Button(this);
         btn1.setText("----------------------");
         btn1.setId(ID_BTN1);
         
         RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
         lp1.addRule(RelativeLayout.ALIGN_WITH_PARENT_TOP);
         lp1.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
         // btn1 位于父 View 的顶部,在父 View 中水平居中
         rl.addView(btn1, lp1 );
        
         btn2 = new Button(this);
         btn2.setText("|\n|\n|\n|\n|\n|");
         btn2.setId(ID_BTN2);
        
         RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
         lp2.addRule(RelativeLayout.POSITION_BELOW, ID_BTN1);
         lp2.addRule(RelativeLayout.ALIGN_LEFT, ID_BTN1);
         // btn2 位于 btn1 的下方、其左边和 btn1 的左边对齐
         rl.addView(btn2, lp2);
        
         btn3 = new Button(this);
         btn3.setText("|\n|\n|\n|\n|\n|");
         btn3.setId(ID_BTN3);
        
         RelativeLayout.LayoutParams lp3 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        lp3.addRule(RelativeLayout.POSITION_BELOW, ID_BTN1);
         lp3.addRule(RelativeLayout.POSITION_TO_RIGHT, ID_BTN2);
         lp3.addRule(RelativeLayout.ALIGN_RIGHT, ID_BTN1);
         // btn3 位于 btn1 的下方、btn2 的右方且其右边和 btn1 的右边对齐(要扩充)
         rl.addView(btn3,lp3);
        
         btn4 = new Button(this);
         btn4.setText("--------------------------------------------");
         btn4.setId(ID_BTN4);
        
         RelativeLayout.LayoutParams lp4 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
         lp4.addRule(RelativeLayout.POSITION_BELOW, ID_BTN2);
         lp4.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
         // btn4 位于 btn2 的下方,在父 Veiw 中水平居中
         rl.addView(btn4,lp4);
        
        
         setContentView(rl);
     }
 }

该实例来自网络上的,可在网上查找详细信息。

posted @ 2013-07-09 10:58  雏鹰的梦想  阅读(278)  评论(0)    收藏  举报