zoukankan      html  css  js  c++  java
  • android 中通过代码创建控件

    package bvb.de.openadbwireless.circle;
    
    import android.annotation.TargetApi;
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Color;
    import android.os.Build;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.RelativeLayout;
    import android.widget.RelativeLayout.LayoutParams;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class AddViewByJava extends Activity {
    
        private Context context = this;
        private RelativeLayout rl_root;
        private TextView tv;
    
        @TargetApi(Build.VERSION_CODES.KITKAT)
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // 最外层的控件 RelativeLayout
            rl_root = new RelativeLayout(context);
    
            // 添加一个TextView
            tv = new TextView(context);
            RelativeLayout.LayoutParams tvLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
            // 设置 margin
            tvLayoutParams.leftMargin = 50;
            // 设置 padding
            tv.setPadding(10, 10, 10, 10);
            tv.setText("textView");
            tv.setLayoutParams(tvLayoutParams);
            rl_root.addView(tv);
    
            //添加一个按钮
            Button btn = new Button(context);
            btn.setText("button");
            // 设置规则 : 在TextView 的下方
            RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
            layoutParams.addRule(RelativeLayout.BELOW, tv.getId());
            btn.setLayoutParams(layoutParams);
            rl_root.addView(btn);
            btn.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    tv.setText(getChild());
                }
            });
    
            // 在Button 下面添加一个LinearLayout,里面水平放4个Button
            LinearLayout ll = new LinearLayout(context);
            RelativeLayout.LayoutParams layoutParams1 = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
            layoutParams1.addRule(RelativeLayout.BELOW, btn.getId());
            ll.setLayoutParams(layoutParams1);
            ll.setBackgroundColor(Color.GREEN);
            ll.setPadding(10, 50, 0, 0);
            rl_root.addView(ll);
    
            ll.setOrientation(LinearLayout.HORIZONTAL);
            int btnCount = 4;
            for (int i = 0; i < btnCount; i++) {
                final Button button = new Button(context);
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT));
                params.weight = 1;
                button.setText("button" + i);
                ll.addView(button, params);
                button.setOnClickListener(new View.OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(context, button.getText(), Toast.LENGTH_SHORT).show();
                    }
                });
            }
    
            ListView lv = new ListView(context);
            RelativeLayout.LayoutParams layoutParams2 = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
            layoutParams2.addRule(RelativeLayout.BELOW, ll.getId());
            lv.setLayoutParams(layoutParams2);
            rl_root.addView(lv);
            List<String> datas = new ArrayList<String>();
            for (int i = 0; i < 20; i++) {
                datas.add("name" + i);
            }
            lv.setAdapter(new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, android.R.id.text1, datas));
    
            setContentView(rl_root);
        }
    
        public String getChild() {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < rl_root.getChildCount(); i++) {
                sb.append(rl_root.getChildAt(i).toString()).append("
    ");
            }
            return sb.toString();
        }
    
    }
  • 相关阅读:
    读《淘宝数据魔方技术架构解析》有感
    架构之谈
    读《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》有感
    第八周周总结
    hadoop安装和配置
    第七周周总结
    [BZOJ]2836: 魔法树
    [BZOJ]4540: [Hnoi2016]序列
    [BZOJ]1511: [POI2006]OKR-Periods of Words
    [BZOJ]1116: [POI2008]CLO
  • 原文地址:https://www.cnblogs.com/Westfalen/p/5427304.html
Copyright © 2011-2022 走看看