Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> ViewManager的Demo

ViewManager的Demo

編輯:Android開發實例

LinearLayout實現了ViewManager接口。

當LinearLayout調用addView (View view, ViewGroup.LayoutParams params)方法後,LinearLayout中會增加一個子視圖,並重新繪制自己。子視圖的布局參數是在addView()方法中指定的params。

LinearLayout調用removeView (View view)方法後,LinearLayout會移除view所引用的實例,並重新繪制自己。view必須是LinearLayout中某個子視圖對象實例的引用。


LinearLayout調用UpdateViewLayout (View view, ViewGroup.LayoutParams params),會使得view所引用的實例使用params重新繪制自己。iew必須是LinearLayout中某個子視圖對象實例的引用。

ViewManagerDemo.java如下:

  1. package com.cnAndroid.api;  
  2. import java.util.LinkedList;  
  3. import android.app.Activity;  
  4. import android.content.Context;  
  5. import android.os.Bundle;  
  6. import android.view.Gravity;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9. import android.view.ViewGroup.LayoutParams;  
  10. import android.widget.Button;  
  11. import android.widget.LinearLayout;  
  12. import android.widget.TextView;  
  13. public class ViewManagerDemo extends Activity {  
  14.     /** Called when the activity is first created. */ 
  15.     Button addViewButton;  
  16.     Button removeViewButton;  
  17.     LinearLayout myLayout;  
  18.     private LinkedList<TextView> textViews;   
  19.           
  20.     boolean isEdited = false;  
  21.       
  22.     Context context ;  
  23.     @Override 
  24.     public void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.main);  
  27.           
  28.         textViews = new LinkedList<TextView>();  
  29.         findViews();  
  30.         setListeners();  
  31.         context = this;  
  32.     }  
  33.       
  34.     private void findViews(){  
  35.         addViewButton = (Button)this.findViewById(R.id.addView);  
  36.         removeViewButton = (Button)this.findViewById(R.id.removeView);  
  37.         myLayout = (LinearLayout)this.findViewById(R.id.liLayout);  
  38.           
  39.         textViews.addFirst((TextView)this.findViewById(R.id.textView_1));  
  40.         textViews.addFirst((TextView)this.findViewById(R.id.textView_2));  
  41.         textViews.addFirst((TextView)this.findViewById(R.id.textView_3));  
  42.     }  
  43.       
  44.     private void setListeners(){  
  45.         if(addViewButton != null){  
  46.             this.addViewButton.setOnClickListener(new View.OnClickListener() {  
  47.                   
  48.                 public void onClick(View v) {  
  49.                     TextView myTextView = new TextView(context);  
  50.                     myTextView.setText("I am new TextView.");  
  51.                     myTextView.setGravity(Gravity.CENTER);  
  52.                   
  53.                     textViews.addFirst(myTextView);  
  54.                       
  55.                     myLayout.addView(myTextView,   
  56.                             new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));   //調用addView  
  57.                     if(!isEdited){  
  58.                         isEdited = true;  
  59.                         myLayout.updateViewLayout(textViews.getLast(),  
  60.                                 new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));  
  61.                     }  
  62.                 }  
  63.             });  
  64.         }  
  65.           
  66.         if(removeViewButton != null){  
  67.             this.removeViewButton.setOnClickListener(new View.OnClickListener() {  
  68.                   
  69.                 public void onClick(View v) {  
  70.                     TextView tView = textViews.remove();  
  71.                     myLayout.removeView(tView);     //移除View  
  72.                     if(isEdited){  
  73.                         isEdited = false;  
  74.                         myLayout.updateViewLayout(textViews.getLast(),  
  75.                                 new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  
  76.                     }  
  77.                 }  
  78.             });  
  79.         }  
  80.     }  

 

main.xml如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     > 
  7.     <LinearLayout 
  8.         android:layout_width="fill_parent" 
  9.         android:layout_height="wrap_content" 
  10.         android:orientation="horizontal"> 
  11.         <Button 
  12.             android:id="@+id/addView" 
  13.             android:layout_width="wrap_content" 
  14.             android:layout_height="wrap_content" 
  15.             android:text="增加一個TextView" 
  16.         /> 
  17.         <Button 
  18.             android:id="@+id/removeView" 
  19.             android:layout_width="wrap_content" 
  20.             android:layout_height="wrap_content" 
  21.             android:text="刪除一個TextView" 
  22.         /> 
  23.     </LinearLayout> 
  24.     <LinearLayout 
  25.         android:id="@+id/liLayout" 
  26.         android:layout_width="fill_parent" 
  27.         android:layout_height="fill_parent" 
  28.         android:orientation = "vertical"> 
  29.         <TextView 
  30.             android:id="@+id/textView_1" 
  31.             android:layout_width="wrap_content" 
  32.             android:layout_height="wrap_content" 
  33.             android:gravity="center" 
  34.             android:text="TextView No.1"/> 
  35.         <TextView 
  36.             android:id="@+id/textView_2" 
  37.             android:layout_width="fill_parent" 
  38.             android:layout_height="wrap_content" 
  39.             android:gravity="center" 
  40.             android:text="TextView No.2"/> 
  41.         <TextView 
  42.             android:id="@+id/textView_3" 
  43.             android:layout_width="wrap_content" 
  44.             android:layout_height="wrap_content" 
  45.             android:text="TextView No.3"/> 
  46.     </LinearLayout> 
  47. </LinearLayout> 

 

效果圖如下:

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved