Android对话框(四)PopupWindow

主布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.popupwindow.MainActivity"
    android:id="@+id/main" >
    <!-- 注意这里要设置布局文件的id为main,后面要调用到 -->
    <!-- 定义按钮和点击事件 -->
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="135dp"
        android:text="打开PopupWindow"
        android:onClick="openPopupWindow"
        />
</RelativeLayout>

Popup对话框布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/aa" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是PopupWindow"
        android:textSize="30dp"
        android:textColor="#823627"/>
</LinearLayout>
package com.example.popupwindow;

import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.PopupWindow;

public class MainActivity extends Activity {

	private PopupWindow popupWindow;
	private View parent;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		/*
		 * 得到布局填充符getLayoutInflater(),也可通过系统服务getSystemService(name)得到
		 * inflate指定布局文件的id
		 */
		View contentView = getLayoutInflater().inflate(R.layout.popup_window, null);
		/*
		 * 第一个参数:PopupWindow要显示的界面
		 * 第二个参数:PopupWindow的宽
		 * 第三个参数:PopupWindow的高
		 */
		popupWindow =
				new PopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT,
						ViewGroup.LayoutParams.WRAP_CONTENT);
		popupWindow.setFocusable(true);
		//让小窗口取得焦点,不然怎么点也不会有反应
		popupWindow.setBackgroundDrawable(new BitmapDrawable());
        //点空白处关掉Popup窗口,在背景new一个位图对象就可以了
		parent = this.findViewById(R.id.main);
		//以上main为当前Activity对应的布局文件
	}
	public void openPopupWindow(View v){
         //显示PopupWindow的方法要多个,可设置具体显示位置方式
		popupWindow.showAtLocation(parent, Gravity.BOTTOM, 0, 0);
	}
}

运行结果

点击按钮

时间: 2024-10-11 07:17:05

Android对话框(四)PopupWindow的相关文章

Android开发之PopupWindow

/* *  Android开发之PopupWindow * *  Created on: 2011-8-8 *  Author: blueeagle *  Email: [email protected] */ 聪明的人善于总结,记录,不知道这是谁说的了,反正要当一个聪明人,我得先学会总结,记录.最近在Android的学习过程中,发现 PopupWindow也是值得研究一番的一个东东,因此拿过来说道说道.与其相似的就归纳到一起说道吧,那就是AlertDialog和Toast. PopupWind

Android中有四个重要的组件类型

Android中有四个重要的组件类型(教程有详细Android开发教程讲解):Activities.Services.Broadcast receivers.Content providers. Activities 1.多个activity可以组合在一起使用并构成一个组合式应用,但是它们各自仍然是互相独立的.它们都继承自基类Activity. 2.一般情况下,当Android应用程序中存在多个Activity时,其中一个Activity会被标记为first并首先展示给用户:若当前Activit

Android学习之-----PopupWindow

Android的对话框有两种:PopupWindow和AlertDialog.详细说明如下:AlertDialog是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情:AlertDialog的位置固定,而PopupWindow的位置可以随意:AlertDialog弹出时,背景是黑色的,但是当我们点击背景,AlertDialog会消失,证明程序不仅响应AlertDialog的操作,还响应其他操作,其他程序没有被阻塞,这说明了AlertDialog是非阻塞式对话框:PopupWindow

Android 对话框使用大全

对话框种类 1.AlertDialog(Dialog)系统对话框. 2.Popupwindow弹出式对话框. 对话框区别 1.AlertDialog非阻塞式对话框:对话框的显示不影响后台任务的执行. 2.PopupWindow阻塞式对话框:对话框弹出后阻塞后台任务执行,直到对话框消失. 对话框示例 Dialog类的对话框 我们一般使用AlertDialog对话框,那么和Dialog有什么区别呢,其实AlertDialog只是继承了Dialog,实现了一些自己的方法而已.所以,AlertDialo

【android】让popupwindow显示在view的上方并与该view水平居中对齐

首先,废话少说,先上效果图: 代码: public class MainActivity extends Activity implements OnClickListener{ private Button showBtn1; private Button showBtn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV

Android第四期 - 单侧滑动效果

Android的设置或者登陆或者其他的一些主窗体要展示的功能需要用到sliding的效果,下面就叫大家怎么做.直接上代码!! MainActivity部分: package net.ting.sliding; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.

Android总结四(Handler)

一.耗时操作 1.什么是ANR 在应用程序的主线程中执行一段耗时的代码, 就有可能出现ANR异常. 耗时的代码未执行结束时, 界面会卡住, 用户对界面进行了操作, 10秒之后耗时代码如果还未结束, 就会出现ANR异常 2.怎么避免ANR 主线程中不要执行耗时的代码 如果一定要做耗时的事情, 开启新线程, 在新线程中执行 3.UI Thread 安卓手机中主线程负责刷新界面, 以及处理用户的操作 应用程序的界面都是由主线程创建的 界面的修改也只能在主线程中执行 4.Handler 有的时候我们需要

Android对话框

这周过的实在是艰辛,自打这周二起我的本本就开始闹"罢工",最后还是重装系统了事. . .   只是可怜了我的那些被格了的软件(悲伤辣么大)!  往事不要再提,人生几度风雨... 简单的说一下(这不是介绍)Android对话框吧 1 // Android对话框 2 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);//创建对话框 3 builder.setTitle("警告"

Android学习四、Android中的Adapter

一.Adapter的介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a View for each item in the data set. 一个Adapter是Ad