Android仿ios底部彈出框效果
阿新 • • 發佈:2018-12-30
準備:
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) { finalDialog 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" > <TextView
android: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" /> <TextViewandroid: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" /> <TextViewandroid: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>