android的PopupWindow的使用案例

PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待,在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行.

PopupWindow pw = new PopupWindow(view,width,height);

       pw.setContentView(popupconten);//重新设置PopupWindow的内容

       pw.setFocusable(true);//默认是false,为false时,PopupWindow没有获得焦点能力,如果这是PopupWindow的内容中有EidtText,需要输入,这是是无法输入的;只有为true的时候,PopupWindow才具有获得焦点能力,EditText才是真正的EditText。

      pw.setAsDropDown(View view);//设置PopupWindow弹出的位置。

案列:

主要代码:

package com.example.demo3;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.support.v7.app.ActionBarActivity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.PopupWindow;
import android.widget.SimpleAdapter;

public class MainActivity extends ActionBarActivity {

	PopupWindow popupWindow;
	View parent;
	private int[] images = {R.drawable.i1,R.drawable.i2,R.drawable.i3,R.drawable.i4
			,R.drawable.i5,R.drawable.i6,R.drawable.i7,R.drawable.i8};
	private String[] names = {"搜索","文件管理","下载管理","全屏","网址","书签","加入书签","分享页面"};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		View contentView = getLayoutInflater().inflate(R.layout.popup, null);
		
		GridView gridView = (GridView) contentView.findViewById(R.id.gridView);
		gridView.setAdapter(getAdapter());//为gridView 绑定数据
		gridView.setOnItemClickListener(new ItemClickListener());
		
		popupWindow = new PopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT, 
				ViewGroup.LayoutParams.WRAP_CONTENT);
		popupWindow.setFocusable(true);
		popupWindow.setBackgroundDrawable(new BitmapDrawable());
		popupWindow.setAnimationStyle(R.style.animation);
		
	//	parent = this.findViewById(R.layout.activity_main);(这样没有得到view)
		parent = getLayoutInflater().inflate(R.layout.popup, null);
	}

	private final class ItemClickListener implements OnItemClickListener{

		@Override
		public void onItemClick(AdapterView<?> parent, View view, int position,
				long id) {
			if(popupWindow.isShowing()){
				popupWindow.dismiss();//关闭popupWindow
			}
		}
	}
	
	private ListAdapter getAdapter() {
		List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
		for(int i=0;i<images.length;i++){
			HashMap<String, Object> item = new HashMap<String, Object>();
			item.put("images", images[i]);
			item.put("names", names[i]);
			data.add(item);
		}
		SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, R.layout.grid_item, 
				new String[]{"images","names"}, new int[]{R.id.imageView,R.id.textView});
		return simpleAdapter;
	}

	public void openPopView(View v){
		Log.d("TAG", "pop了");
		popupWindow.showAtLocation(parent, Gravity.BOTTOM, 0, 0);
	}
}

完整代码链接:http://download.csdn.net/detail/tan313/8291977

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值