float paddingDp = 10f;
int paddingPx = 5;
paddingPx = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip,
paddingDp, activity.Resources.DisplayMetrics);
//alert dialog
adDialog.SetView(input, paddingPx, 5, paddingPx, 5);
try this below extension
i did this For xamarin android ,i hope this will work for Java as well with little modifications
public static AlertDialog ShowInputDialogue(this Activity activity, string title, string message, string txtValue, string dismissButtonText, string submitButtonText, Action<string> OnSubmit,bool TextInputType =false,bool isEdittable =true)
{
AlertDialog adDialog = null;
try
{
adDialog = new AlertDialog.Builder(activity).Create();
// Create TextView
EditText input = new EditText(activity);
input.ImeOptions = Android.Views.InputMethods.ImeAction.Done;
input.Enabled = isEdittable;
float paddingDp = 10f;
int paddingPx = 5;
if (!TextInputType)
{
input.SetBackgroundResource(Resource.Color.edit_text_shape);
input.InputType = Android.Text.InputTypes.ClassNumber | Android.Text.InputTypes.NumberFlagDecimal;
input.Text = txtValue;
//input.SetMaxLines(5);
//input.SetLines(5);
}
else
{
input.SetBackgroundResource(Resource.Color.edit_text_shape);
// Convert to pixels
paddingPx = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, paddingDp, activity.Resources.DisplayMetrics);
input.SetPadding(paddingPx, paddingPx, paddingPx, paddingPx);
input.Text = txtValue;
input.SetMaxLines(5);
input.SetLines(5);
}
//input.FocusChange += (object sender, View.FocusChangeEventArgs e) =>
//{
// // request a soft keyboard.
// InputMethodManager imm = (InputMethodManager)activity.GetSystemService(Context.InputMethodService);
// if (e.HasFocus)
// imm.ToggleSoftInput(ShowFlags.Forced, HideSoftInputFlags.None);
//};
input.EditorAction += (s, e) =>
{
if (e.ActionId == ImeAction.Done)
{
adDialog.Hide();
adDialog.Cancel();
if (OnSubmit != null)
OnSubmit(input.Text);
}
};
//adDialog.Window.ClearFlags(WindowManagerFlags.NotFocusable | WindowManagerFlags.AltFocusableIm);
adDialog.SetTitle(title);
adDialog.SetMessage(message);
adDialog.SetView(input, paddingPx, 5, paddingPx, 5);
adDialog.SetButton(dismissButtonText, new EventHandler<DialogClickEventArgs>(
(s, args) =>
{
adDialog.Hide();
adDialog.Cancel();
View view = adDialog.CurrentFocus;
if (view != null)
{
InputMethodManager imm = (InputMethodManager)activity.GetSystemService(Context.InputMethodService);
imm.HideSoftInputFromWindow(view.WindowToken, HideSoftInputFlags.None);
}
}));
adDialog.SetButton2(submitButtonText, new EventHandler<DialogClickEventArgs>(
(s, args) =>
{
if (OnSubmit != null)
OnSubmit(input.Text);
View view = adDialog.CurrentFocus;
if (view != null)
{
InputMethodManager imm = (InputMethodManager)activity.GetSystemService(Context.InputMethodService);
imm.HideSoftInputFromWindow(view.WindowToken, HideSoftInputFlags.None);
}
}));
adDialog.Window.Attributes.WindowAnimations = Resource.Style.DialogAnimation_2;
adDialog.Show();
//input.RequestFocus();
SetDialogueTheme(activity, adDialog);
}
catch (Exception ex)
{
throw ex;
}
return adDialog;
}
Usage in activity:
this.ShowInputDialogue("Title", "", "editetext notes", "Cancel", "Save", async (val) =>
{
try
{
//handle for save
}
catch (Exception ex)
{
}
}, true);