GroupAdapter.java
package com.android.popup.demo;
import java.util.List;
import android.R.color;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class GroupAdapter extends BaseAdapter{
private Context context;
private List<String> list;
public GroupAdapter(Context context, List<String> list){
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
ViewHolder holder;
if(convertView==null){
convertView = LayoutInflater.from(context).inflate(R.layout.group_item_view, null);
holder = new ViewHolder();
convertView.setTag(holder);
holder.groupItem=(TextView) convertView.findViewById(R.id.groupItem);
} else {
holder=(ViewHolder) convertView.getTag();
}
holder.groupItem.setTextColor(Color.WHITE);
holder.groupItem.setText(list.get(position));
return convertView;
}
static class ViewHolder{
TextView groupItem;
}
}
ProPopupWindowDemo.java
package com.android.popup.demo;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
public class ProPopupWindowDemo extends Activity {
private PopupWindow popupWindow;
private ListView lv_group;
private View view;
private View top_title;
private ImageView tvttitle;
private List<String> groups;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
top_title = this.findViewById(R.id.top_title);
tvttitle = (ImageView) top_title.findViewById(R.id.base_action_bar_icon);
tvttitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showWindow(v);
}
});
}
private void showWindow(View parent){
if(popupWindow == null){
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.group_list, null);
lv_group = (ListView) view.findViewById(R.id.lvGroup);
//加载数据
groups = new ArrayList<String>();
groups.add("全部");
groups.add("我的微博");
groups.add("好友");
groups.add("亲人");
groups.add("同学");
groups.add("朋友");
groups.add("陌生人");
GroupAdapter groupAdapter = new GroupAdapter(this, groups);
lv_group.setAdapter(groupAdapter);
//创建一个PopupWindow对象
popupWindow = new PopupWindow(view, 220, 280);
}
Log.v("Popup", "debug");
//使其聚焦
popupWindow.setFocusable(true);
//设置允许在外点击消失
popupWindow.setOutsideTouchable(true);
//这个是为了奠基返回back也能使其消失,并且并不会影响你的背景
popupWindow.setBackgroundDrawable(new BitmapDrawable());
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
//显示位置为:屏幕宽度的一半 - PopupWindow的高度的一半
int xPos = windowManager.getDefaultDisplay().getWidth() / 2 - popupWindow.getWidth() / 2;
popupWindow.showAsDropDown(parent, -53, -10);
lv_group.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position,
long id) {
Toast.makeText(ProPopupWindowDemo.this, groups.get(position), 1000).show();
if(popupWindow != null){
popupWindow.dismiss();
}
}
});
}
}
实现效果: