美文网首页
Android 之Java动态生成View

Android 之Java动态生成View

作者: 天涯笑笑生 | 来源:发表于2017-08-28 14:45 被阅读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;
    
            }
    
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Android 之Java动态生成View

          本文链接:https://www.haomeiwen.com/subject/jeqgdxtx.html