1. FrameLayout 最简单的布局
是类似一个九宫格的布局, 子元素用 android:layout_gravity 属性来确定位置。这个很简单。可以在开发环境中拖动,看看效果。
2. LinearLayout 线性布局 简单来说就是子元素按照一条线来排序
LinearLayout元素 orientation属性值 vertical(竖着排) horizontal(横着排)
子元素中可以使用 android:layout_weight 属性来设置比重 相当于在线性布局中,一条线子元素占几份
// 使用代码来控制线性布局 private LinearLayout root = null; private Button btnClickMe = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); root = new LinearLayout(this); root.setOrientation(LinearLayout.VERTICAL); // 这里设置线性布局的方向 setContentView(root); for(int i=0; i<5; i++) { btnClickMe = new Button(this); btnClickMe.setText("Click me"); // 这个线性布局参数 就是相当于 是放在子元素里面的参数,跟线性布局元素无关 LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT ); lp.weight = 1; // 设置权重 root.addView(btnClickMe, lp); } System.out.println("onCreate"); }
3. 相对布局
可以相对于父元素来设置外边距, 也可以相对其他的元素来设置外边距。 这里面有很多细节,可以通过编辑器里面的图形拖拉来发现。
// 使用代码来控制相对布局 private RelativeLayout root = null; private TextView tv = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); root = new RelativeLayout(this); setContentView(root); tv = new TextView(this); tv.setText("橙汁儿网"); RelativeLayout.LayoutParams pl = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); pl.leftMargin = 500; // 左边距 pl.topMargin = 300; // 右边距 root.addView(tv, pl); System.out.println("onCreate"); }