示例demo
main.xml布局代码:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="match_parent"
3 android:layout_height="match_parent"
4 android:orientation="vertical" >
5
6 <Button
7 android:layout_width="wrap_content"
8 android:layout_height="wrap_content"
9 android:onClick="show"
10 android:text="显示" />
11
12 </LinearLayout>
gridview的布局代码
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical"
6 android:background="@drawable/bg">
7
8 <GridView
9 android:id="@+id/gv"
10 android:layout_width="match_parent"
11 android:layout_height="wrap_content"
12 android:numColumns="4"
13 android:horizontalSpacing="2dip"
14 android:verticalSpacing="2dip">
15
16 </GridView>
17
18 </LinearLayout>
gridview渐变色背景
1 <?xml version="1.0" encoding="utf-8"?>
2 <shape xmlns:android="http://schemas.android.com/apk/res/android"
3 android:shape="rectangle">
4
5 <gradient
6 android:startColor="#5FF2FA"
7 android:endColor="#4BED23"
8 />
9
10
11 </shape>
item布局
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6
7 <ImageView
8 android:id="@+id/iv"
9 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"
11 android:layout_gravity="center"
12 android:src="@drawable/i1" />
13
14 <TextView
15 android:id="@+id/tv"
16 android:layout_width="wrap_content"
17 android:layout_height="wrap_content"
18 android:layout_gravity="center"
19 android:layout_marginTop="5dip"
20 android:text="搜索"
21 android:textColor="#f00" />
22
23 </LinearLayout>
Acitivity代码:
1 package com.android.hzy.popupwindow;
2
3 import android.app.Activity;
4 import android.graphics.drawable.BitmapDrawable;
5 import android.os.Bundle;
6 import android.view.Gravity;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.view.ViewGroup;
10 import android.widget.AdapterView;
11 import android.widget.AdapterView.OnItemClickListener;
12 import android.widget.BaseAdapter;
13 import android.widget.GridView;
14 import android.widget.ImageView;
15 import android.widget.PopupWindow;
16 import android.widget.TextView;
17
18 public class MainActivity extends Activity {
19
20 private PopupWindow mPopupWindow;
21 private LayoutInflater mInflater;
22
23 @Override
24 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.activity_main);
27
28 mInflater = LayoutInflater.from(getApplicationContext());
29 }
30
31 public void show(View v) {
32 View contentView = mInflater.inflate(R.layout.popupwindow, null);
33 GridView gv = (GridView) contentView.findViewById(R.id.gv);
34 gv.setAdapter(new MyAdapter());
35 gv.setOnItemClickListener(new MyOnItemClickListener());
36
37 mPopupWindow = new PopupWindow(contentView,
38 ViewGroup.LayoutParams.MATCH_PARENT,
39 ViewGroup.LayoutParams.WRAP_CONTENT);
40
41 // 如果需要点击其他的地方 popupwindow自动消失:1.popupwindow必须指定背景 2.popupwindow必须获取焦点
42 mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
43 mPopupWindow.setFocusable(true);
44
45 // 显示popupwindow窗口
46 // mPopupWindow.showAsDropDown(v); // 显示在按钮下方
47 mPopupWindow.showAtLocation((View)v.getParent(), Gravity.BOTTOM, 0, 0);// 显示在屏幕下方
48 }
49
50 private final class MyOnItemClickListener implements OnItemClickListener{
51
52 @Override
53 public void onItemClick(AdapterView<?> parent, View view, int position,
54 long id) {
55 // TODO Auto-generated method stub
56 mPopupWindow.dismiss();
57 }
58
59 }
60
61 public final class MyAdapter extends BaseAdapter {
62
63 private int[] images = new int[] { R.drawable.i1, R.drawable.i2,
64 R.drawable.i3, R.drawable.i4, R.drawable.i5, R.drawable.i6,
65 R.drawable.i7, R.drawable.i8 };
66
67 private String[] names = new String[] { "搜索", "文件管理", "下载管理", "全屏",
68 "网址", "书签", "加入书签", "页面分享" };
69
70 @Override
71 public int getCount() {
72 // TODO Auto-generated method stub
73 return images.length;
74 }
75
76 @Override
77 public Object getItem(int position) {
78 // TODO Auto-generated method stub
79 return names[position];
80 }
81
82 @Override
83 public long getItemId(int position) {
84 // TODO Auto-generated method stub
85 return position;
86 }
87
88 @Override
89 public View getView(int position, View convertView, ViewGroup parent) {
90 // TODO Auto-generated method stub
91 View view = mInflater.inflate(R.layout.item, null);
92
93 ImageView iv = (ImageView) view.findViewById(R.id.iv);
94 TextView tv = (TextView) view.findViewById(R.id.tv);
95
96 iv.setImageResource(images[position]);
97 tv.setText(names[position]);
98 return view;
99 }
100
101 }
102 }