package com.miscell.lucky; import android.app.Dialog; import android.content.Context; import android.util.TypedValue; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; /** * Created by chenjishi on 14/11/21. */ public class ConfirmDialog extends Dialog { private LinearLayout mButtonLayout; private float mDensity; private View.OnClickListener mPositiveListener; private String mPositiveText; public ConfirmDialog(Context context) { super(context, R.style.FullHeightDialog); setCanceledOnTouchOutside(true); setContentView(R.layout.confirm_dialog_layout); mButtonLayout = (LinearLayout) findViewById(R.id.button_layout); mDensity = getContext().getResources().getDisplayMetrics().density; } public ConfirmDialog setTitle(String title) { TextView textView = (TextView) findViewById(R.id.dialog_title); textView.setText(title); textView.setVisibility(View.VISIBLE); return this; } public ConfirmDialog setMessage(String message) { TextView textView = (TextView) findViewById(R.id.dialog_message); textView.setText(message); textView.setVisibility(View.VISIBLE); return this; } public ConfirmDialog setPositiveButton(String text, View.OnClickListener listener) { mPositiveListener = listener; mPositiveText = text; mButtonLayout.removeAllViews(); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT); Button button = getButton(getContext(), text, listener); mButtonLayout.addView(button, lp); return this; } public ConfirmDialog setNegativeButton(String text, View.OnClickListener listener) { mButtonLayout.removeAllViews(); mButtonLayout.setWeightSum(2.f); Context context = getContext(); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, WRAP_CONTENT); lp.weight = 1.f; Button button1 = getButton(context, text, listener); mButtonLayout.addView(button1, lp); if (null == listener) { button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); } LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(1, MATCH_PARENT); View divider = new View(context); divider.setBackgroundColor(0xFFDDDDDD); mButtonLayout.addView(divider, lp1); Button button2 = getButton(context, mPositiveText, mPositiveListener); mButtonLayout.addView(button2, lp); return this; } private Button getButton(Context context, String text, View.OnClickListener listener) { int padding = (int) (8 * mDensity + .5f); Button button = new Button(context); button.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15.f); button.setTextColor(0xFF333333); button.setText(text); button.setBackgroundResource(R.drawable.item_highlight_bkg); button.setPadding(0, padding, 0, padding); button.setOnClickListener(listener); return button; } @Override public void show() { int screenWidth = getContext().getResources().getDisplayMetrics().widthPixels; WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.width = (int) (screenWidth * .6f); getWindow().setAttributes(lp); super.show(); } }