public static Dialog show( Activity activity, final DialogOptions options, final IDialogResponse response) { final Dialog dialog = new Dialog(activity); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.dialog_base); FontManager.handleFontTags(dialog.findViewById(R.id.dialog_container)); final ArrayList<EditText> editTexts = new ArrayList<EditText>(); final IDialogAdapter<?> adapter = options.getDialogAdapter(); final ListView list = (ListView) dialog.findViewById(R.id.dialog_list); if (adapter == null) { Utils.remove(list); } else { list.setAdapter(new DialogInternalAdapter(adapter)); } // give scrollable view a max height ViewGroup.LayoutParams scrollWrapParams = list.getLayoutParams(); list.measure(list.getWidth(), list.getHeight()); Utils.d("Ok " + list.getWidth() + " ; " + list.getHeight()); Utils.d("Ok " + list.getMeasuredWidth() + " ; " + list.getMeasuredHeight()); // if (scroll.getMeasuredHeight() < scrollWrapParams.height) { // scrollWrapParams.height = scroll.getMeasuredHeight(); // scrollWrap.setLayoutParams(scrollWrapParams); // } final TextView title = (TextView) dialog.findViewById(R.id.dialog_title); title.setText(options.getTitle()); final TextView description = (TextView) dialog.findViewById(R.id.dialog_description); description.setText(options.getDescription()); Button negative = (Button) dialog.findViewById(R.id.dialog_negative); if (!options.isNegativeButtonEnabled()) { Utils.remove(negative); } else { negative.setText(options.getNegative()); if (options.isReverseColors()) { negative.setTextColor(Utils.color(R.color.positive)); } negative.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { if (response != null) { response.onNegative(); } dialog.dismiss(); } }); } Button positive = (Button) dialog.findViewById(R.id.dialog_positive); if (!options.isPositiveButtonEnabled()) { Utils.remove(positive); } else { positive.setText(options.getPositive()); if (options.isReverseColors()) { positive.setTextColor(Utils.color(R.color.negative)); } positive.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { if (response != null) { response.onPositive(); } dialog.dismiss(); } }); } dialog.setOnCancelListener( new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialogInterface) { if (response != null) { response.onCancel(); } } }); dialog.show(); return dialog; }