以前总觉得popWindow使用起来很困难,不过朋友给的一个实用工具,还不错,就是popWindow里面的选择实用listview来做的,详情如下:
创建一个PopwindowList
/**
* 备注:
*/
public class PopwindowList extends BaseAdapter {
//
// 适配器
Context mContext;
ArrayList<String> mArrayList;
public PopwindowList(Context context, ArrayList<String> arrayList) {
mContext = context;
mArrayList = arrayList;
}
@Override
public int getCount() {
return mArrayList.size();
}
@Override
public Object getItem(int position) {
return mArrayList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.pomenu_item, null);
holder = new ViewHolder();
convertView.setTag(holder);
holder.groupItem = (TextView) convertView
.findViewById(R.id.tv_itemtext);
} else {
holder = (ViewHolder) convertView.getTag();
}
里面使用到的布局 pop.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv_itemtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/gray"
android:gravity="center"
android:padding="12dp" />
然后创建PopwindowUtils.java
/**
* <p/>
* 备注:
*/
public class PopWindowUtils {
//
static ArrayList<String> mArrayList;
private static ListView lv_listview;
/**
*
* 弹出 popwindow
* @param context 上下文
* @param mStrings window 里面的数据
* @param view 需要添加的pop
* @param num1 左右x偏移量1
* @param num2 上下y偏移量2
* @param activity 你需要变色的activity 可以为空
* @param callback 回调
*/
public static PopupWindow showPopupWindow(final Context context, ArrayList<String> mStrings, View view, int num1, int num2, final Activity activity, final Callback callback){
mArrayList = new ArrayList<>();
// 一个自定义的布局,作为显示的内容
View contentView = LayoutInflater.from(context).inflate(
R.layout.item_popwindow, null);
for (int i = 0; i < mStrings.size(); i++) {
mArrayList.add(mStrings.get(i));
}
lv_listview = (ListView) contentView.findViewById(R.id.lv_listview);
PopwindowList popwindowList = new PopwindowList(context, mArrayList);
lv_listview.setAdapter(popwindowList);
// 菜单项点击监听器
final PopupWindow popupWindow = new PopupWindow(contentView,
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT, true);
popupWindow.setFocusable(true);
在所使用popWindow的java文件点击方法里面添加如下代码
private void dianji() {
gengduo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<String> strings = new ArrayList<>();
String[] shu={"全部","收入","支出"};//popWindow里面所需要选择的字段
for (int i = 0; i <3 ; i++) {
strings.add(shu[i]);
}
PopWindowUtils.showPopupWindow(JiDeta.this, strings, gengduo, 10, 10, JiDeta.this, new PopWindowUtils.Callback() {
@Override
public void getString(String itemName, int postion) {
Log.i("lg","我点的是"+itemName+"号是"+postion);//点击pop的位置
}
@Override
public void getWindow(PopupWindow popupWindow) {
}
});
}
});
好了,这只是简单的使用,自己总结看,希望看到的也可以帮助到你。