Android 之Java动态生成View

2017-08-28  本文已影响0人  天涯笑笑生

LayoutInflate & LayoutParams (tip)

一、LayoutInflate

除过setContentView()用于Activity加载布局,就要使用LayoutInflate

ViewGroup viewGroup = (ViewGroup) LayoutInflater.from(this).inflate(R.layout.activity_main, null);

详解:Android 通过Java代码生成创建界面。动态生成View,动态设置View属性。addRules详解

二、LayoutParams

详解:Android中LayoutParams总结和用法

RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(100,100); 
RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

注:单位是px

public class MainActivity extends Activity implements View.OnClickListener{

    private static final String TAG = "MainActivity";
    private   LinearLayout ll_one;
    private HashMap<Integer, Button> btnMap = null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnMap = new HashMap<Integer, Button>();

        ll_one = findViewById(R.id.ll_one);

        for (Integer i = 0; i < 6; i++) {
            Button button1 = new Button(ll_one.getContext());
            button1.setText("button"+i);
            button1.setTag(i);
            button1.setTextColor(Color.GREEN);
            button1.setOnClickListener(this);

            LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(300, 120);
            button1.setLayoutParams(btnParams);

            ll_one.addView(button1);
            btnMap.put(i,button1);
        }
    }

    @Override
    public void onClick(View view) {
        Log.d(TAG, "onClick: "+view.getTag());

        Button button = btnMap.get((Integer) view.getTag());
        button.setBackgroundColor(Color.RED);

        switch ((Integer) view.getTag()){
            case 0:
                Log.d(TAG, "ss onClick: "+view.getTag());
                break;
            case 1:
                Log.d(TAG, "ss onClick: "+view.getTag());
                break;
            case 2:
                Log.d(TAG, "ss onClick: "+view.getTag());
                break;

        }

    }
}

上一篇下一篇

猜你喜欢

热点阅读