PopupWindow实现用户登陆

PopupWindow是阻塞对话框,只有在外部线程或者PopupWindow本身做退出操作才行。PopupWindow完全依赖Layout做外观,在常见的开发中PopupWindow应该会与AlertDialog混用使用。

main.xml的源码如下:

这里的PopupWindow是个登录框,点“确定”则自动填写,点“取消”则关闭PopupWindow。

popupwindow.xml的源码:

接下来是程序代码:

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:请一针见血的评论。
  • 2:评论需要审核通过后才能显示。
  • 3:评论字数限制在1000字以内。
  • 当前字数:0
热门文章
推荐文章
随机文章
关于本站 - 广告服务 - 版权声明 - 联系我们 - 友情链接 - 网站地图 - 帮助中心