AndroidはaddViewを利用してActivityにViewコンポーネントを動的に追加


本稿では,UIインタフェースにレイアウトとコントロールを動的に追加する方法について述べ,プログラミング時にはいくつかのコンテンツを動的に表示する必要があり,Viewを動的に追加する際には主にaddViewメソッドを用いる.
1.addViewメソッドの概要
Androidでは、レイアウトViewのaddView関数を使用して、動的に生成されたViewアイテムをレイアウトViewに追加できます.
例は次のとおりです.
インタフェースコード:
 

Activityコード:
 
public class helloWorld extends Activity {
 
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView( R.layout.main );
 
      //   LinearLayout   
      LinearLayout ll = (LinearLayout)findViewById(R.id.viewObj);
 
      //  TextView    LinearLayout  
      TextView tv = new TextView(this);
      tv.setText("Hello World");
      ll. addView ( tv );
 
      //  Button 1    LinearLayout  
      Button b1 = new Button(this);
      b1.setText("  ");
      ll. addView ( b1 );
 
      //  Button 2    LinearLayout  
      Button b2 = new Button(this);
      b2.setText("  ");
      ll. addView ( b2 );
 
      //  LinearLayout    Button 1
      ll. removeView ( b1 );
   }
}

上記コードの位置は、画面コードLinerlayoutのorientationがverticalに設定されているため、垂直に並べられていますが、美観のために追加されたViewの位置やスタイルを設定する必要があります.ビューを追加する際には、レイアウト(例:Linearlayoutなど)とコントロール(例:Button、TextViewなど)の2種類に分けて紹介します.
2.レイアウトの動的追加(スタイルと場所を含む)
次の例では、レイアウトを動的に追加する方法について説明します.基本的な内容は上記のコードと一致しており、主に追加したレイアウトの位置を制御する方法に重点を置いています.レイアウトの位置を制御するときにLayoutParamクラスを使用して実現します.
例:
インタフェースコードは上のインタフェースコードと似ていて、繰り返し紹介していません.
Activityクラス部分コード:
 
RelativeLayout rl = new RelativeLayout(this);
//  RelativeLayout     
RelativeLayout.LayoutParams relLayoutParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
this.addView(rl, relLayoutParams);

 
3.コントロールの動的追加
動的にコントロールを追加するのはレイアウトを追加するのと似ています.以下のコードは主にコントロールの位置を見て、次のコードと2番目の追加レイアウトの補充を重視して、新しく追加したレイアウトの中でコントロールを追加します.
インタフェースコードも同じように重複していません.
Activityクラス部分コード:
 
RelativeLayout rl = new RelativeLayout(this);
//  RelativeLayout     
RelativeLayout.LayoutParams relLayoutParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

TextView temp = new TextView(this);
temp .setId(1);
temp.setText(“  ”);
rl.addView(temp);

TextView tv = new TextView(this);
tv.setText(“  ”);
tv.setId(2);
LayoutParams param1 = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
param1.addRule(RelativeLayout.BELOW, 1);//    id 1      
rl.addView(tv,param1);


Button update = new Button(this);
update.setText("Button");
LayoutParams param2 = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
param2.addRule(RelativeLayout.RIGHT_OF, 1);//    id 1      
rl.addView(update,param2);

this.addView(rl, relLayoutParams);

注意:位置とスタイルを制御する場合、レイアウトとコントロールの使用方法は同じです.
4.位置パラメータの説明
Webサイトを参照:http://blog.sina.com.cn/s/blog_5da93c8f0101azq7.html
5.参考サイト:
(1)http://blog.csdn.net/frdde/article/details/7289047
(2)http://blog.csdn.net/xanxus46/article/details/7742446
(3)http://blog.sina.com.cn/s/blog_5da93c8f0101azq7.html
(4)http://blog.sina.com.cn/s/blog_4ac60f270100myjk.html