Android 之Java动态生成View

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;

        }

    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,034评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,858评论 0 17
  • 介绍自己负责的部分,如何实现的。 框架的搭建排查问题以及结解决方式兼容性保证性能优化上线之后模块导致crash的比...
    黄海佳阅读 14,516评论 6 350
  • 今年的秋 终于还是来了 今年来得比往年晚很多 昨日 太阳还似夏日般灼热 今晚 秋风吹起 多了些许凉意
    非非心阅读 1,531评论 0 0
  • 晚上和媳妇儿聊天,视频。媳妇儿心疼流量,说后天就可以见面了。我撇嘴,还要后天呢。媳妇儿说一个月都等了,...
    七根阅读 1,414评论 0 1

友情链接更多精彩内容