一、我们已经知道使用XML为组件指定属性,以及添加到指定的布局中是非常的简单的,但是有时候
我们还是需要使用java代码来创建一些变化性非常大的组件,以及为它们指定一些属性,添加到布局
当中。但是使用java代码来做到这些不如XML容易,接下来简单介绍一下那些共性的东西。
1、用java代码创建指定的组件
2、指定组件的属性,将组件添加到布局当中
首先来说,那些属于组件本身的属性,一般都有对应的方法,我们可以查阅官方文档;之后是,我们
需要指定那些属于LayoutParams指定的属性,方法有两种:
①android.view.View有方法
void setLayoutParams(ViewGroup.LayoutParams params)
这个方法能够指定组件的LayoutParams的属性,只需要创建一个
ViewGroup.LayoutParams对象,或者创建一个ViewGroup.LayoutParams的子类对象赋予
params,在ViewGroup.LayoutParams以及其子类的构造方法中的参数就能够指定这些属性;
如:
LinearLayout layout = (LinearLayout) findViewById(R.Id.root) ;
Button bn = new Button(this) ;
bn.setLayoutParams
(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT)) ;
layout.addView(bn) ;
②android.view.ViewGroup抽象类中有多个重载的addView方法,这个
方法能够指定添加的组件的布局属性,如,其中一个addView方法如下:
addView(View child, ViewGroup.LayoutParams params) ;
很显然我们通过创建一个ViewGroup.LayoutParams的对象或者子类对象就能够指定要添加的这个组件的布局属性了 ;
③请注意上面的说法,参数params可以是ViewGroup.LayoutParams,也可是
它的子类,这样的话,我们就能够指定不同布局管理器的添加方式,因为这些
布局管理器的静态内部类都是继承自ViewGroup.LayoutParams的(或者直接
继承自ViewGroup.LayoutParams, 或者间接继自
ViewGroup.LayoutParams )