public class ShowPopUtils {
privateView contentView;
private PopupWindow popupWindow;
public void showPop(Context mc, View m) {
LayoutInflater inflater = LayoutInflater.from(mc);
contentView = inflater.inflate(R.layout.popup_shop_service, null);
popupWindow = new PopupWindow(contentView);
contentView.findViewById(R.id.tv_pss_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
popupWindow.dismiss();
}
});
//背景色 不设置背景不能点击外面消失
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.argb(50, 52, 53, 55)));
//宽高
popupWindow.setHeight(LinearLayout.LayoutParams.MATCH_PARENT);
popupWindow.setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
//设置点击窗口外边窗口消失
popupWindow.setOutsideTouchable(true);
// 设置此参数获得焦点,否则无法点击
popupWindow.setFocusable(true);
//显示位置 activity底部弹出
popupWindow.showAtLocation(mView, Gravity.BOTTOM, 0, 0); }
public View getV() {
returncontentView;
}
public void dismiss() {
if (popupWindow != null && popupWindow.isShowing()) {
popupWindow.dismiss();
}
}
}
布局文件
<?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="wrap_content"
android:background="@android:color/transparent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_pss_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/tv_pss_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorText"
android:gravity="center"
android:paddingTop="@dimen/car_10px"
android:text="提示"
android:textColor="@color/color_setup_text" />
<ListView
android:id="@+id/lv_pss_service"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorText" />
<TextView
android:id="@+id/tv_pss_cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/car_8px"
android:layout_marginTop="@dimen/car_5px"
android:background="@color/colorText"
android:gravity="center"
android:padding="@dimen/car_20px"
android:text="取消" />
</LinearLayout>
调用方法
private void showService(final List<DataBean> mList) {
final ShowPopUtils showPopUtils = new ShowPopUtils();
//方法调用 传上下文和view
showPopUtils.showPop(mContext, findViewById(R.id.tv_asi_rz));
//得到布局
View contentView = showPopUtils.getV();
ListView mLv_service = (ListView) contentView.findViewById(R.id.lv_pss_service);
ServiceListAdapter serviceListAdapter = new ServiceListAdapter(mContext, mList);
mLv_service.setAdapter(serviceListAdapter);
mLv_service.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
showPopUtils.dismiss();//销毁
}
});
}
位置
1、popupWindow.showAsDropDown(mView);//在控件的正下方
2、popupWindow.showAtLocation(mView, Gravity.BOTTOM, 0, 0);//activity底部弹出
int[] location = new int[2];
mLine.getLocationOnScreen(location);
3、popupWindow.showAtLocation(mView, Gravity.NO_GRAVITY, location[0], location[1] - popupWindow.getHeight());//控件的正上方
4、//控件的左边
popupWindow.showAtLocation(v13, Gravity.NO_GRAVITY, location[0] - popupWindow.getWidth()
, location[1] - (popupWindow.getHeight() - v13.getHeight()) / 2);
PopupWindow使用
最新推荐文章于 2023-08-04 08:38:55 发布