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

通过代码设置布局参数

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);
        }
    }
}



你可能感兴趣的:(通过代码设置布局参数,添加布局)