Android 经常是随着条件的改变,布局也随着改变,这就需要在代码中进行控制布局。
一、已经有的布局,例如在相对布局下,也就是说控制相对布局下的子控件的位置大小等
//一定要导入是相对布局的LayoutParams
import android.widget.RelativeLayout.LayoutParams;
//控制iv_sign(ImageView)的大小和位置
LayoutParams lp = (LayoutParams)iv_sign.getLayoutParams();
lp.width = dip2px(context,51);
lp.height = dip2px(context,51);
lp.addRule(RelativeLayout.CENTER_HORIZONTAL, -1);
lp.addRule(RelativeLayout.CENTER_VERTICAL, -1);
iv_sign.setLayoutParams(lp);
二、创建新的布局,例如线性布局,也就是说在xml文件中线性布局里我们需要创建新的子布局,比如文本布局
//注意一定要到线性布局的包
import android.widget.LinearLayout.LayoutParams;
// 创建LinearLayout对象
LinearLayout mLinearLayout = new LinearLayout(this);
// 建立布局样式宽和高,对应xml布局中:
// android:layout_width="fill_parent"
// android:layout_height="fill_parent"
mLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
// 设置方向,对应xml布局中:
// android:orientation="vertical"
mLinearLayout.setOrientation(LinearLayout.VERTICAL);
// 创建TextView对象
TextView mTextView = new TextView(this);
// 设置文字
mTextView.setText("hello world");
// 为其建立布局样式,对应xml布局中:
// android:layout_width="fill_parent"
// android:layout_height="wrap_content"
LinearLayout.LayoutParams mLayoutParams = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
// 在父类布局中添加它,及布局样式
mLinearLayout.addView(mTextView, mLayoutParams);
总之,这里还有很多其他的属性例如居中,距离,颜色等,自己可以多试一试。