Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android入門第十篇之PopupWindow

Android入門第十篇之PopupWindow

編輯:Android開發實例

     介紹過AlertDialog之後,接下來就介紹一下PopupWindow這種對話框。PopupWindow是阻塞對話框,只有在外部線程 或者 PopupWindow本身做退出操作才行。PopupWindow完全依賴Layout做外觀,在常見的開發中,PopupWindow應該會與AlertDialog常混用。

       貼出本例中運行的結果圖:

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. <Button android:id="@+id/Button01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="PopupWindow演示"></Button> 
  8. </LinearLayout> 

下圖是PopupWindow彈出的截圖,這裡的PopupWindow是個登錄框,點“確定”則自動填寫,點“取消”則關閉PopupWindow。

 

popupwindow.xml的源碼:

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  4.     android:layout_width="fill_parent" android:layout_height="wrap_content" 
  5.     android:orientation="vertical" android:background="#000000"> 
  6.  
  7.     <TextView android:id="@+id/username_view" 
  8.         android:layout_height="wrap_content" 
  9.         android:layout_marginLeft="20dip" 
  10.         android:layout_marginRight="20dip" android:text="用戶名" 
  11.         android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="fill_parent"/> 
  12.  
  13.     <EditText android:id="@+id/username_edit" 
  14.         android:layout_height="wrap_content" 
  15.         android:layout_width="fill_parent" android:layout_marginLeft="20dip" 
  16.         android:layout_marginRight="20dip" android:capitalize="none" 
  17.         android:textAppearance="?android:attr/textAppearanceMedium" /> 
  18.  
  19.     <TextView android:id="@+id/password_view" 
  20.         android:layout_height="wrap_content" 
  21.         android:layout_marginLeft="20dip" 
  22.         android:layout_marginRight="20dip" android:text="密碼" 
  23.         android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="fill_parent"/> 
  24.  
  25.     <EditText android:id="@+id/password_edit" 
  26.         android:layout_height="wrap_content" 
  27.         android:layout_width="fill_parent" android:layout_marginLeft="20dip" 
  28.         android:layout_marginRight="20dip" android:capitalize="none" 
  29.         android:password="true" 
  30.         android:textAppearance="?android:attr/textAppearanceMedium" /> 
  31.  
  32. <LinearLayout android:id="@+id/LinearLayout01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:gravity="center"><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/BtnOK" android:layout_weight="100" android:text="確定"></Button><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="100" android:text="取消" android:id="@+id/BtnCancel"></Button></LinearLayout> 
  33. </LinearLayout> 

 

接下來是程序源碼:

 

 
  1. package com.testAlertDialog;     
  2.     
  3. import android.app.Activity;     
  4. import android.app.AlertDialog;     
  5. import android.content.Context;     
  6. import android.content.DialogInterface;     
  7. import android.os.Bundle;     
  8. import android.text.Editable;     
  9. import android.view.Gravity;     
  10. import android.view.LayoutInflater;     
  11. import android.view.View;     
  12. import android.view.View.OnClickListener;     
  13. import android.widget.Button;     
  14. import android.widget.EditText;     
  15. import android.widget.PopupWindow;     
  16.     
  17.     
  18. public class testAlertDialog extends Activity {     
  19.     Button btnPopupWindow;     
  20.     /** Called when the activity is first created. */    
  21.     @Override    
  22.     public void onCreate(Bundle savedInstanceState) {     
  23.         super.onCreate(savedInstanceState);     
  24.         setContentView(R.layout.main);     
  25.         //定義按鈕     
  26.         btnPopupWindow=(Button)this.findViewById(R.id.Button01);     
  27.         btnPopupWindow.setOnClickListener(new ClickEvent());     
  28.     }     
  29.          
  30.          
  31.     //統一處理按鍵事件     
  32.     class ClickEvent implements OnClickListener{     
  33.     
  34.         @Override    
  35.         public void onClick(View v) {     
  36.             // TODO Auto-generated method stub     
  37.             if(v==btnPopupWindow)     
  38.             {     
  39.                 showPopupWindow(testAlertDialog.this,     
  40.                         testAlertDialog.this.findViewById(R.id.Button01));     
  41.             }     
  42.         }     
  43.     }     
  44.     
  45.     public void showPopupWindow(Context context,View parent){     
  46.         LayoutInflater inflater = (LayoutInflater)        
  47.            context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);        
  48.         final View vPopupWindow=inflater.inflate(R.layout.popupwindow, null, false);     
  49.         final PopupWindow pw= new PopupWindow(vPopupWindow,300,300,true);     
  50.     
  51.         //OK按鈕及其處理事件     
  52.         Button btnOK=(Button)vPopupWindow.findViewById(R.id.BtnOK);     
  53.         btnOK.setOnClickListener(new OnClickListener(){     
  54.             @Override    
  55.             public void onClick(View v) {     
  56.                 //設置文本框內容     
  57.                 EditText edtUsername=(EditText)vPopupWindow.findViewById(R.id.username_edit);     
  58.                 edtUsername.setText("username");     
  59.                 EditText edtPassword=(EditText)vPopupWindow.findViewById(R.id.password_edit);     
  60.                 edtPassword.setText("password");     
  61.             }     
  62.         });     
  63.              
  64.       //Cancel按鈕及其處理事件     
  65.         Button btnCancel=(Button)vPopupWindow.findViewById(R.id.BtnCancel);     
  66.         btnCancel.setOnClickListener(new OnClickListener(){     
  67.             @Override    
  68.             public void onClick(View v) {     
  69.                 pw.dismiss();//關閉     
  70.             }     
  71.         });     
  72.         //顯示popupWindow對話框     
  73.         pw.showAtLocation(parent, Gravity.CENTER, 0, 0);     
  74.     }     
  75.          
  76. }   
轉自:http://blog.csdn.net/hellogv/archive/2010/10/21/5956358.aspx
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved