addview

android界面中,添加一个子视图,有两种方法:一、在xml布局文件中写死;二、在程序中动态添加。

这里,介绍一下如何在程序中动态添加一个子视图。

例子:

1 <LinearLayout  
2    android:id="@+id/viewObj"  
3    android:layout_width="wrap_content"  
4    android:layout_height="wrap_content"  
5    android:orientation="vertical"  
6    android:layout_x="1px"  
7    android:layout_y="1px"  
8 />  
 1 public class helloWorld extends Activity {  
 2    
 3    public void onCreate(Bundle savedInstanceState) {  
 4       super.onCreate(savedInstanceState);  
 5       setContentView( R.layout.main );  
 6    
 7       // 取得LinearLayout 物件   
 8       LinearLayout ll = (LinearLayout)findViewById(R.id.viewObj);  
 9    
10       // 将TextView 加入到LinearLayout 中   
11       TextView tv = new TextView(this);  
12       tv.setText("Hello World");  
13       ll. addView ( tv );  
14    
15       // 将Button 1 加入到LinearLayout 中   
16       Button b1 = new Button(this);  
17       b1.setText("取消");  
18       ll. addView ( b1 );  
19    
20       // 将Button 2 加入到LinearLayout 中   
21       Button b2 = new Button(this);  
22       b2.setText("确定");  
23       ll. addView ( b2 );  
24    
25       // 从LinearLayout 中移除Button 1   
26       ll. removeView ( b1 );  
27    }  
28 }  

效果:

流程:1、在要加入子视图的xml文件里,定义一个framelayout或LinearLayout,说明要加入视图的位置、大小等。

         2、在程序中,new出这个视图,找到framelayout或LinearLayout,直接用framelayout.addView(我们自己new的视图)。

          例:mainView = new LinearLayout(mCtx);
                mainView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

             可用setLayoutParams来设置我们new的这个视图的宽、高。

 

那么,怎么控制添加的视图的位置了?

例:创建一个TextView视图

   TextView tv = new TextView(mCtx);
   tv.setLayoutParams(new LayoutParams(100, 40));
   tv.setText("网络连接中...");

    添加到指定位置:

    ViewGroup vg = (ViewGroup)v.getParent();
   FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
   params.gravity = Gravity.CENTER;//添加到这个vg视图的正中间

  //上面两句话等同于FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,Gravity.CENTER);
   vg.addView(tv,params);

效果:

 

posted @ 2013-05-20 16:31  little_star  阅读(769)  评论(0编辑  收藏  举报