Android 自定义PopupWindow类似iOS的ActionSheet

效果图如下:

核心代码:

package com.zms.actionsheet;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface.OnCancelListener;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.view.WindowManager;import android.widget.LinearLayout;import android.widget.TextView;public class ActionSheet {public interface OnActionSheetSelected {void onClick(int whichButton);}private ActionSheet() {}public static Dialog showSheet(Context context, final OnActionSheetSelected actionSheetSelected,OnCancelListener cancelListener) {final Dialog dlg = new Dialog(context, R.style.ActionSheet);LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.actionsheet, null);final int cFullFillWidth = 10000;layout.setMinimumWidth(cFullFillWidth);TextView mContent = (TextView) layout.findViewById(R.id.content);TextView mCancel = (TextView) layout.findViewById(R.id.cancel);mContent.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {actionSheetSelected.onClick(0);dlg.dismiss();}});mCancel.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubactionSheetSelected.onClick(1);dlg.dismiss();}});Window w = dlg.getWindow();WindowManager.LayoutParams lp = w.getAttributes();lp.x = 0;final int cMakeBottom = -1000;lp.y = cMakeBottom;lp.gravity = Gravity.BOTTOM;dlg.onWindowAttributesChanged(lp);dlg.setCanceledOnTouchOutside(false);if (cancelListener != null)dlg.setOnCancelListener(cancelListener);dlg.setContentView(layout);dlg.show();return dlg;}}

我的GitHub:周木水的GitHubhttps://github.com/zhoumushui

,辽远或偏僻的地方,而会常常想起这一次的旅行,想起那座山,那个城,那些人……

Android 自定义PopupWindow类似iOS的ActionSheet

相关文章:

你感兴趣的文章:

标签云: