編輯:Android開發實例
介紹過AlertDialog之後,接下來就介紹一下PopupWindow這種對話框。PopupWindow是阻塞對話框,只有在外部線程 或者 PopupWindow本身做退出操作才行。PopupWindow完全依賴Layout做外觀,在常見的開發中,PopupWindow應該會與AlertDialog常混用。
貼出本例中運行的結果圖:
main.xml的源碼如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <Button android:id="@+id/Button01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="PopupWindow演示"></Button>
- </LinearLayout>
下圖是PopupWindow彈出的截圖,這裡的PopupWindow是個登錄框,點“確定”則自動填寫,點“取消”則關閉PopupWindow。
popupwindow.xml的源碼:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent" android:layout_height="wrap_content"
- android:orientation="vertical" android:background="#000000">
- <TextView android:id="@+id/username_view"
- android:layout_height="wrap_content"
- android:layout_marginLeft="20dip"
- android:layout_marginRight="20dip" android:text="用戶名"
- android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="fill_parent"/>
- <EditText android:id="@+id/username_edit"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent" android:layout_marginLeft="20dip"
- android:layout_marginRight="20dip" android:capitalize="none"
- android:textAppearance="?android:attr/textAppearanceMedium" />
- <TextView android:id="@+id/password_view"
- android:layout_height="wrap_content"
- android:layout_marginLeft="20dip"
- android:layout_marginRight="20dip" android:text="密碼"
- android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="fill_parent"/>
- <EditText android:id="@+id/password_edit"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent" android:layout_marginLeft="20dip"
- android:layout_marginRight="20dip" android:capitalize="none"
- android:password="true"
- android:textAppearance="?android:attr/textAppearanceMedium" />
- <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>
- </LinearLayout>
接下來是程序源碼:
轉自:http://blog.csdn.net/hellogv/archive/2010/10/21/5956358.aspx
- package com.testAlertDialog;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.text.Editable;
- import android.view.Gravity;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.PopupWindow;
- public class testAlertDialog extends Activity {
- Button btnPopupWindow;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //定義按鈕
- btnPopupWindow=(Button)this.findViewById(R.id.Button01);
- btnPopupWindow.setOnClickListener(new ClickEvent());
- }
- //統一處理按鍵事件
- class ClickEvent implements OnClickListener{
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if(v==btnPopupWindow)
- {
- showPopupWindow(testAlertDialog.this,
- testAlertDialog.this.findViewById(R.id.Button01));
- }
- }
- }
- public void showPopupWindow(Context context,View parent){
- LayoutInflater inflater = (LayoutInflater)
- context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- final View vPopupWindow=inflater.inflate(R.layout.popupwindow, null, false);
- final PopupWindow pw= new PopupWindow(vPopupWindow,300,300,true);
- //OK按鈕及其處理事件
- Button btnOK=(Button)vPopupWindow.findViewById(R.id.BtnOK);
- btnOK.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- //設置文本框內容
- EditText edtUsername=(EditText)vPopupWindow.findViewById(R.id.username_edit);
- edtUsername.setText("username");
- EditText edtPassword=(EditText)vPopupWindow.findViewById(R.id.password_edit);
- edtPassword.setText("password");
- }
- });
- //Cancel按鈕及其處理事件
- Button btnCancel=(Button)vPopupWindow.findViewById(R.id.BtnCancel);
- btnCancel.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- pw.dismiss();//關閉
- }
- });
- //顯示popupWindow對話框
- pw.showAtLocation(parent, Gravity.CENTER, 0, 0);
- }
- }
1.底層網絡接口采用apache的httpclient連接池框架; 2.圖片緩存采用基於LRU的算法; 3.網絡接口采用監聽者模式; 4.包含圖片的OOM處理(及
一、問題描述 使用BordercastReceiver和Service組件實現下述功能: 1.當手機處於來電狀態,啟動監聽服務,對來電進行監聽錄音。 2.設置
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
1、下載 進入官網(http://opencv.org/)下載OpenCV4Android並解壓。目錄結構如下圖所示。 其中,sdk目錄即是我們開發openc