知识点:
程序运行截图:
代码如下:
1、将所需要的图片全部倒入/drawable中
2、main.xml
<?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" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示popupwindow"
android:onClick="show"
/>
</LinearLayout>
3、popupwindow.xml
<?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/bg">
<GridView
android:id="@+id/gv"
android:numColumns="4"
android:horizontalSpacing="2dip"
android:verticalSpacing="2dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
4、item.xml
<?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" >
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/i1"
android:layout_gravity="center"
/>
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="搜索"
android:textColor="@android:color/white"
android:layout_marginTop="5dip"
/>
</LinearLayout>
5、bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#5FF2FA"
android:endColor="#4BED23"
/>
</shape>
6、MainActivity
package com.njupt.popupwindow1;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity {
private PopupWindow mPopupWindow;
private LayoutInflater mInflater;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mInflater = LayoutInflater.from(this);
}
public void show(View v){
View contentView = mInflater.inflate(R.layout.popupwindow, null);
GridView gv = (GridView) contentView.findViewById(R.id.gv);
gv.setAdapter(new MyAdapter());
gv.setOnItemClickListener(new MyOnItemClickListener());
mPopupWindow = new PopupWindow(contentView,ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
mPopupWindow.setFocusable(true);
// mPopupWindow.showAtLocation((View)v.getParent(), Gravity.BOTTOM, 0, 0);
mPopupWindow.showAsDropDown(v);
}
private class MyAdapter extends BaseAdapter{
private int[] images = new int[]{
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 = new String[]{
"章泽天",
"刘诗诗",
"刘亦菲",
"康逸琨",
"章泽天2",
"刘诗诗2",
"刘亦菲2",
"康逸琨2"
};
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int position) {
return images[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = mInflater.inflate(R.layout.item, null);
ImageView iv = (ImageView) view.findViewById(R.id.iv);
TextView tv = (TextView) view.findViewById(R.id.tv);
iv.setImageResource(images[position]);
tv.setText(names[position]);
return view;
}
}
private class MyOnItemClickListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
mPopupWindow.dismiss();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}