布局管理器

布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小;

布局管理器之间的继承关系 :

在上面的UML图中可以看出, 绝对布局 帧布局 网格布局 相对布局 线性布局直接继承ViewGroup,表格布局继承的LinearLayout;


父容器与本容器属性 :

android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器都有一个LayoutParams内部类.Android:... 是父容器用来控制子组件的属性.

如android:layout_gravity 是控制组件本身的对齐方式

android:gravity是控制本容器子组件的对齐方式;


注意事项:

各布局不要乱用各自的属性。比如把属于AbsoluteLayout布局的android:layout_x和android:layout_y用到LinearLayout布局或RelativeLayout布局,或者把RelativeLayout布局的 below,rightof等属性应用到其他布局中。这样做虽然不会报错,但是根本达不到我们需要的效果。

  1. 关于android:layout_width=”fill_parent”和android:layout_height=”wrap_content” ,这是对每个布局宽和高的设置。wrap_content可表示随着其中控件的不同而改变这个布局的宽度或高度,类似于自动设置宽和高,fill_parent使布局填充整个屏幕,另外还有一种match_parent,它本质上和 fill_parent 一样,并从API Level8开始替代fill_parent。


布局填充器的三种写法:

setContentView(R.layout.activity_main);

等同于下面二句话:

View view = View.inflate(this, R.layout.activity_main, null);

setContentView(view);

 第一种:

setContentView(R.layout.activity_main);

LinearLayout ll = (LinearLayout) findViewById(R.id.ll_content);

View.inflate(this,R.layout.item, ll); //将item布局添加到ll布局中

 
第二种:

LinearLayout ll = (LinearLayout) findViewById(R.id.ll_content);

LayoutInflater factory = LayoutInflater.from(this);

View view = factory.inflate(R.layout.item, ll);


第三种:

LinearLayout ll = (LinearLayout) findViewById(R.id.ll_content);

LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view = inflater.inflate(R.layout.item, ll);

setContentView(view);

原文地址:https://www.cnblogs.com/loaderman/p/6430491.html