Android LinearLayout動的追加サブView


今日はLinearLayoutのダイナミックレイアウトを整えて、言わないで、コードを貼ります.
1.まずOnCreate()でinit()メソッドを呼び出す.
2.主な処理コード.
 
   
   
   
   
  1. /** 
  2.      *  :
     
  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
     
  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
     
  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
     
  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()を呼び出すのとcreateView 2()を呼び出すのと同じ効果です.