diff --git a/cfalertdialog/src/main/java/com/crowdfire/cfalertdialog/CFAlertDialog.java b/cfalertdialog/src/main/java/com/crowdfire/cfalertdialog/CFAlertDialog.java index ffa2825..3b31d11 100644 --- a/cfalertdialog/src/main/java/com/crowdfire/cfalertdialog/CFAlertDialog.java +++ b/cfalertdialog/src/main/java/com/crowdfire/cfalertdialog/CFAlertDialog.java @@ -18,9 +18,12 @@ import androidx.annotation.StyleRes; import androidx.core.content.ContextCompat; import androidx.core.content.res.ResourcesCompat; +import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.view.ViewCompat; import androidx.appcompat.app.AppCompatDialog; import androidx.cardview.widget.CardView; + +import android.text.InputType; import android.text.TextUtils; import android.view.Gravity; import android.view.LayoutInflater; @@ -32,6 +35,7 @@ import android.view.animation.AnimationUtils; import android.widget.CheckBox; import android.widget.CompoundButton; +import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RadioButton; @@ -81,6 +85,7 @@ public enum CFAlertActionAlignment { private TextView dialogTitleTextView, dialogMessageTextView; private ImageView cfDialogIconImageView; private ScrollView cfDialogScrollView; + private EditText inputEditText; // endregion @@ -174,6 +179,7 @@ private void bindCardSubviews() { buttonContainerLinearLayout = (LinearLayout) dialogCardView.findViewById(R.id.alert_buttons_container); cfDialogFooterLinearLayout = (LinearLayout) dialogCardView.findViewById(R.id.alert_footer_container); selectableItemsContainer = (LinearLayout) dialogCardView.findViewById(R.id.alert_selection_items_container); + inputEditText = dialogCardView.findViewById(R.id.tv_dialog_input); } private void populateCardView() { @@ -202,6 +208,15 @@ private void populateCardView() { // Buttons populateButtons(params.context, params.buttons); + // Input text + inputEditText.setVisibility(params.showInput ? View.VISIBLE : View.GONE); + if(params.inputTint != -1) + DrawableCompat.setTint(inputEditText.getBackground(), params.inputTint); + if(params.inputHint != null) + inputEditText.setHint(params.inputHint); + if(params.inputType != null) + inputEditText.setInputType(params.inputType); + // Text gravity setTextGravity(params.textGravity); @@ -275,6 +290,10 @@ public void show() { startPresentAnimation(); } + public String getInputText() { + return inputEditText.getText().toString(); + } + @Override public void dismiss() { @@ -1061,6 +1080,26 @@ public Builder setAutoDismissAfter(long duration) { return this; } + public Builder setInputHint(@StringRes int hint) { + this.params.inputHint = hint; + return this; + } + + public Builder showInput(boolean show) { + this.params.showInput = show; + return this; + } + + public Builder setInputTint(@ColorInt int tintColor) { + this.params.inputTint = tintColor; + return this; + } + + public Builder setInputType(int type) { + this.params.inputType = type; + return this; + } + public CFAlertDialog create() { CFAlertDialog cfAlertDialog; if (params.theme == 0) { @@ -1083,6 +1122,7 @@ public CFAlertDialog show() { private static class DialogParams { + private Context context; private @ColorInt int backgroundColor = Color.parseColor("#B3000000"); private @ColorInt int dialogBackgroundColor = Color.parseColor("#FFFFFF"); @@ -1091,9 +1131,9 @@ private static class DialogParams { private CharSequence message, title; private @ColorInt int textColor = -1; private int theme = R.style.CFDialog, - textGravity = Gravity.LEFT, - iconDrawableId = -1, - contentImageDrawableId = -1; + textGravity = Gravity.LEFT, + iconDrawableId = -1, + contentImageDrawableId = -1; private CFAlertStyle dialogStyle = CFAlertStyle.ALERT; private View headerView, footerView; private int headerViewId = -1, footerViewId = -1; @@ -1110,6 +1150,10 @@ private static class DialogParams { private OnClickListener onSingleItemClickListener; private OnMultiChoiceClickListener onMultiChoiceClickListener; private long autoDismissDuration = -1; + private Integer inputHint; + private boolean showInput; + private @ColorInt int inputTint = Color.parseColor("#B3000000"); + private Integer inputType; public boolean isDialogBodyEmpty() { if (!TextUtils.isEmpty(title)) return false; @@ -1123,8 +1167,8 @@ public boolean isDialogBodyEmpty() { return true; } } - private static class CFAlertActionButton { + private Context context; private String buttonText; private DialogInterface.OnClickListener onClickListener; diff --git a/cfalertdialog/src/main/res/layout/cfalert_layout.xml b/cfalertdialog/src/main/res/layout/cfalert_layout.xml index 412655d..5717dc1 100644 --- a/cfalertdialog/src/main/res/layout/cfalert_layout.xml +++ b/cfalertdialog/src/main/res/layout/cfalert_layout.xml @@ -84,6 +84,13 @@ android:animateLayoutChanges="true" tools:text="This is your description" /> + + + + + CFAlertDialogDemo Sample Button + Test Hint Left