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);
尝试使用以下扩展程序
我已经为Xamarin Android完成了这个,希望在Java中进行一些小修改后也能起作用
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();
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;
}
else
{
input.SetBackgroundResource(Resource.Color.edit_text_shape);
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.EditorAction += (s, e) =>
{
if (e.ActionId == ImeAction.Done)
{
adDialog.Hide();
adDialog.Cancel();
if (OnSubmit != null)
OnSubmit(input.Text);
}
};
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();
SetDialogueTheme(activity, adDialog);
}
catch (Exception ex)
{
throw ex;
}
return adDialog;
}
在活动中的使用:
this.ShowInputDialogue("Title", "", "editetext notes", "Cancel", "Save", async (val) =>
{
try
{
}
catch (Exception ex)
{
}
}, true);