android LinearLayout 动态添加子View

今天整了下LinearLayout 的动态布局,不说了,贴下代码。

1.首先在OnCreate()中调用init()方法.

2.主要处理代码。

 

  
  
  
  
  1. /** 
  2.      * 方法描述:初始化<br> 
  3.      * 创建时间:2013-4-28 上午11:47:40 创建人:李小冰 
  4.      */ 
  5.     private void initView() { 
  6.         layout = (LinearLayout) findViewById(R.id.layout_main); 
  7.         layout.setOrientation(LinearLayout.VERTICAL); // 设置Linearlayout 为垂直方向布局 
  8.          
  9.         layout.addView(createView("小张")); 
  10.         layout.addView(createView("小林")); 
  11.         layout.addView(createView("小李")); 
  12.         layout.addView(createView("小黄")); 
  13.     } 
  14.  
  15.     /** 
  16.      * 方法描述:创建一个新子View<br> 
  17.      * 创建时间:2013-4-28 下午12:52:37 创建人:李小冰 
  18.      *  
  19.      * @param txt1 
  20.      * @param txt2 
  21.      * @return 
  22.      * ps:这个子View 里面又有两个TextView 
  23.      */ 
  24.     private View createView(String txt) { 
  25.         LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( 
  26.                 LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
  27.         // View view =LayoutInflater.from(this).inflate(R.layout.view_item, null);//也可以从XML中加载布局 
  28.         LinearLayout view = new LinearLayout(this); 
  29.         view.setLayoutParams(lp);//设置布局参数 
  30.         view.setOrientation(LinearLayout.HORIZONTAL);// 设置子View的Linearlayout// 为垂直方向布局 
  31.  
  32.         //定义子View中两个元素的布局 
  33.         ViewGroup.LayoutParams vlp = new ViewGroup.LayoutParams( 
  34.                 ViewGroup.LayoutParams.WRAP_CONTENT, 
  35.                 ViewGroup.LayoutParams.WRAP_CONTENT); 
  36.         ViewGroup.LayoutParams vlp2 = new ViewGroup.LayoutParams( 
  37.                 ViewGroup.LayoutParams.WRAP_CONTENT, 
  38.                 ViewGroup.LayoutParams.WRAP_CONTENT); 
  39.          
  40.         TextView tv1 = new TextView(this); 
  41.         TextView tv2 = new TextView(this); 
  42.         tv1.setLayoutParams(vlp);//设置TextView的布局 
  43.         tv2.setLayoutParams(vlp2); 
  44.         tv1.setText("姓名: "); 
  45.         tv2.setText(txt); 
  46.         tv2.setPadding(calculateDpToPx(50), 000);//设置边距 
  47.         view.addView(tv1);//将TextView 添加到子View 中 
  48.         view.addView(tv2);//将TextView 添加到子View 中 
  49.         return view; 
  50.     } 
  51.      
  52.     /** 
  53.      * 方法描述:从布局中加载新子View<br> 
  54.      * 创建时间:2013-4-28  下午2:09:57   创建人:李小冰 
  55.      * @param txt 
  56.      * @return 
  57.      */ 
  58.     private View createView2(String txt){ 
  59.         LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( 
  60.                 LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
  61.          View view =LayoutInflater.from(this).inflate(R.layout.view_item, null);//也可以从XML中加载布局 
  62.          
  63.         view.setLayoutParams(lp);//设置布局参数 
  64.        
  65.         TextView tv1 = (TextView) view.findViewById(R.id.tv_1); 
  66.         TextView tv2 = (TextView) view.findViewById(R.id.tv_2); 
  67.         tv1.setText("姓名: "); 
  68.         tv2.setText(txt); 
  69.      
  70.         return view; 
  71.     } 
  72.      
  73.     /** 
  74.      * 方法描述:把dp转换为px<br> 
  75.      * 创建时间:2013-4-28  下午2:17:38   创建人:李小冰 
  76.      * @param tv 
  77.      * @return 
  78.      */ 
  79.     private int calculateDpToPx(int padding_in_dp){ 
  80.             final float scale = getResources().getDisplayMetrics().density; 
  81.             return  (int) (padding_in_dp * scale + 0.5f); 
  82.     } 

ps:调用createView()和调用createView2()效果一样。

 

你可能感兴趣的:(android,LinearLayout,动态布局)