通过代码设置布局参数,添加布局

来源:互联网 发布:用益信托 数据 编辑:程序博客网 时间:2024/06/15 03:53

通过代码设置布局参数

1)只有添加到父控件中之后,才能获取布局参数,要不然会报空指针。getLayoutParams(), addView()

2)换一种写法:

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tv.getLayoutParams();params.setMargins(50, 0, 0, 0);
此时不用再调用setLayoutParams()方法,因为获取的params本身就是tv的布局参数。(直接new布局参数对象)

3)注意是哪个包下的布局参数,一定要注意。

4)理解:

tv = (TextView) findViewById(R.id.tv);LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tv.getLayoutParams();getLayoutParams();获取的是哪个包下的布局参数?此控件所在的父布局(离此控件所在的父布局)1)在布局文件中,通过xml设置margin值;2)在Activity中通过java代码设置margin值两种形式LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tv.getLayoutParams();//通过代码动态设置边距params.setMargins(20, 50, 20, 20);

5)LayoutParams相当于一个Layout的信息包它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。

但LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:
1,一个确定的值;
2,FILL_PARENT,即填满(和父容器一样大小);
3,WRAP_CONTENT,即包裹住组件就好。


代码如下: 

package com.example.tuhuadmin.fanxinglei.widget;import android.graphics.Color;import android.os.Bundle;import android.widget.LinearLayout;import android.widget.TextView;import com.example.tuhuadmin.fanxinglei.R;import com.example.tuhuadmin.fanxinglei.utils.DensityUtils;/** * Created on 2016/8/16. * Author:crs * Description:通过代码设置布局参数 */public class AddChildViewActivity extends BaseActivity {    private LinearLayout ll_gifts;    String gerRule[] = {"满100减9", "满1000减9", "满1000减91"};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.add_child);        ll_gifts = (LinearLayout) findViewById(R.id.ll_gifts);        initView(gerRule);    }    private void initView(String gerRule[]) {        int length = 2;        int textSizePX = DensityUtils.sp2px(this, 5);        for (int i = 0; i < length; i++) {            String str = gerRule[i];            TextView tv = new TextView(this);            tv.setTextSize(textSizePX);            tv.setBackgroundResource(R.drawable.shape);            tv.setTextColor(Color.parseColor("#df3348"));            tv.setPadding(50, 50, 50, 50);            tv.setText(str);            ll_gifts.addView(tv);            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);            params.setMargins(50, 0, 0, 0);            tv.setLayoutParams(params);        }    }}



0 0
原创粉丝点击