准备:
public class ActionSheet { public interface OnActionSheetSelected { void onClick(int whichButton); } private ActionSheet() { } public static Dialog showSheet(final Context context, final int layoutId, final OnActionSheetSelected actionSheetSelected, final OnCancelListener cancelListener) { final Dialog dialog = new Dialog(context, R.style.ActionSheet); final LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); final LinearLayout layout = (LinearLayout) inflater.inflate(layoutId, null); final int cFullFillWidth = 10000; layout.setMinimumWidth(cFullFillWidth); final Window w = dialog.getWindow(); final WindowManager.LayoutParams lp = w.getAttributes(); lp.x = 0; final int cMakeBottom = -1000; lp.y = cMakeBottom; lp.gravity = Gravity.BOTTOM; dialog.onWindowAttributesChanged(lp); dialog.setCanceledOnTouchOutside(true); if (cancelListener != null) { dialog.setOnCancelListener(cancelListener); } dialog.setContentView(layout); dialog.show(); return dialog; } }
<style name="ActionSheet" parent="@android:style/Theme.Dialog">
应用:
private ActionSheet.OnActionSheetSelected mOnActionSheetSelected; private Dialog mActionSheet;调用showGetPhotoDialog()方法
public void onActionSheetClicked(final View view) { mOnActionSheetSelected.onClick(view.getId()); } public void setOnSheetClicked(final ActionSheet.OnActionSheetSelected onActionSheetSelected) { mOnActionSheetSelected = onActionSheetSelected; } private void showGetPhotoDialog() { mActionSheet = ActionSheet.showSheet(this, R.layout.actionsheet_dialog, getOnActionSheetClicked(), null); } private ActionSheet.OnActionSheetSelected getOnActionSheetClicked() { return new ActionSheet.OnActionSheetSelected() { @Override public void onClick(final int whichButton) { switch (whichButton) { case R.id.tv_button1: break;布局:case R.id.tv_button2: break;case R.id.tv_calendar: mActionSheet.dismiss(); break; default: break; } mActionSheet.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="@color/clear" android:orientation="vertical" android:padding="5dp" > <TextViewandroid:id="@+id/tv_botton1"android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/actionsheet_top_selector" android:clickable="true" android:gravity="center" android:onClick="onActionSheetClicked" android:text="Button1" android:textSize="18sp" /> <TextView android:id="@+id/tv_botton2" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/actionsheet_bottom_selector" android:clickable="true" android:gravity="center" android:onClick="onActionSheetClicked" android:text="Button2" android:textColor="@color/green_title_bar" android:textSize="18sp" /> <TextView android:id="@+id/cancel" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:background="@drawable/actionsheet_single_selector" android:clickable="true" android:gravity="center" android:onClick="onActionSheetClicked" android:text="@string/cancle" android:textColor="@color/cancle_blue" android:textSize="18sp" /></LinearLayout>