Development issue/problem:
I have an EditText in an AlertDialog. That’s what it looks like.
See where tddjck is and how many prints there are. That’s what I want (I used setPadding, setting left and right to 50), but I also want the blue line underneath it to be indented. How can I do that?
The code I used is below:
last warning AlertDialog.Builder = new AlertDialog.Builder(thisActivity) ;
last entry EditText = new EditText(thisActivity) ;
entry.setSingleLine() ;
entry.setPadding(50, 0, 50, 0) ;
alert.setTitle(by…);
alert.setMessage(enter the name of the person who did:);
alert.setView(input);
alert.setPositiveButton(Ok, new DialogInterface.OnClickListener() {
public null and void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString().trim() ;
}
});
alert.setNegativeButton(Cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
alert.show() ;
Thank you very much.
How can I solve this problem?
Solution 1:
last warning AlertDialog.Builder = new AlertDialog.Builder(thisActivity);
last EditText entry = new EditText(thisActivity);
entry.setSingleLine();
FrameLayout container = new FrameLayout(thisActivity);
FrameLayout.LayoutParams parameter = new FrameLayout.LayoutParams(ViewGroup).LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = getResources().getDimensionPixelSize(R.dimen.dialog_margin);
input.setLayoutParams(params);
container.addView(input);
alert.setTitle(by…);
alert.setMessage(test message);
alert.setView(container) ;
Make sure you add another line to your dimens.xml source file, for example. B.
20p.
Solution 2:
The interval parameter can be passed using the setView method.
alert.setView(view, left_space, top_space, right_space, bottom_space) ;
In your case, you might want to try
alert.setView (input, 50.0, 50.0) ;
Solution 3:
There is a Kotlin extension here that allows the constructor to define the EditText view.
Val Float: Int
get() = (the * Resources.getSystem().displayMetrics.density).toInt()
fun AlertDialog.Builder.setEditText(editText : EditText) : AlertDialog.Builder {
fall container = FrameLayout(context)
container.addView(editText)
fall containerParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT
)
fall marginHorizontal = 48F
fall marginTop = 16F
containerParams.topMargin = (marginTop / 2).toPx
containerParams.leftMargin = marginHorizontal.toInt()
containerParams.rightMargin = marginHorizontal.toInt()
container.layoutParams = containerParams.
fall superContainer = FrameLayout(context)
superContainer.addView(container)
setView (supercontainer)
give this back
}
Example of use
val editText = EditText(this)
AlertDialog.Builder(this)
.setTitle(Group Name)
.setEditText(editText)
.setPositiveButton(OK, { _ : DialogInterface, _ : Int ->
// Work with text here
val text = editText.text.toString()
Toast.makeText(applicationContext, text, Toast.LENGTH_SHORT).show()
})
.setNegativeButton(Cancel, null)
.show()
Result
Solution 4:
I’m creating a generic single-entry AlertDialog function. The code speaks for itself.
Utils.java.
Used community class
/**
* dp in px-Wert umrechnen.
* –
* Quelle: https://stackoverflow.com/a/6327095/2263329
*/
public static int dpToPx(float dp, Resources) {
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, resources.getDisplayMetrics());
return (int) px;
}.
/**
* Advanced dialogue with an Eingabeld at this time.
*
* @param context Anwendungskontext
* @param title Dialog title
* @param message Dialogeingabe Nachricht/Tipp
* @param inputType EingabeTyp von EditText
* @param positiveBtnText Dialogue positiveBtnText
* @param negativeBtnText negativeBtnText
* @param listener Dialogbuttons click listener
*/
public static emptiness showSingleInputDialog(
@NonNull Context),
@NonNull String title,
@NonNull String message,
int inputType,
@NonNull String positiveBtnText,
@NonNull String negativeBtnText,
@NonNull last SingleInputDialogListener listener
) {
AlertDialog.Builder alert = new AlertDialog.Builder(context);
alert.setTitle(title);
TextEingabeLayout textEingabeLayout = new TextEingabeLayout (context);
last EditText input = new EditText(context);
input.setSingleLine(true);
input.setInputType(inputType);
input.setHint(message);
FrameLayout container = new FrameLayout(context);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
int left_margin = Utils.dpToPx(20, context.getResources());
int top_margin = Utils.dpToPx(10, context.getResources());
int right_margin = Utils.dpToPx(20, context.getResources()));
int bottom_margin = Utils.dpToPx(4, context.getResources());
params.setMargins(left_margin, top_margin, right_margin, bottom_margin);
textInputLayout.setLayoutParams(params);
textInputLayout.addView(input);
container.addView(textInputLayout);
alert.setView(container);
alert.setPositiveButton(positiveBtnText, new DialogInterface.OnClickListener() {
public null and void onClick(DialogInterface dialogue, int whichButton))) {
listener.positiveCallback(input.getText().toString());
}
});
alert.setNegative button (negativeBtnText,
new DialogInterface.OnClickListener() {
public null onClick(DialogInterface dialogue, in which)) {
listener.negativeCallback();
}
});
alert.show();
}
}
SingleInputDialogListener.java
SingleInputDialogListener public interface {
void positiveCallback(String inputText);
null negativeCallback();
}
Spoil you an image:
Utils.showSingleInputDialog(mContext,
Passwort recuperate,
Ihre E-Mail-Address,
InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS,
Recuperate,
Abort,
new SingleInputDialogListener() {
@Alle
public void positiveCallback(String inputText)) {
Toast.makeText(mContext, inputText, Toast.LENGTH_SHORT).show();
}
@Override
public void negativeCallback() {
// …
}
});
Solution No 5:
Floating fillingDp = 1 in fillingPx = 5;
paddingPx = (int)TypedValue.ApplyDimension (ComplexUnitType.Dip,
paddingDp, activity.Resources.DisplayMetrics);
//
adDialog.SetView(input, paddingPx, 5, paddingPx, 5);
Please try the following extension
I made it for xamarin android, hopefully it will also work with light changes for Java.
Public static AlertDialog ShowInputDialog (this activity, string name, string message, txtValue string, dismissButtonText string, submitButtonText string, Action OnSubmit,bool TextInputType =false,bool isEdittable =true){AlertDialog adDialog = null;try{adDialog = new AlertDialog.Builder(activity).Create();// TextViewEditText erstellen input = new EditText(activity);input.ImeOptions = Android.Views.InputMethods.ImeAction.Done;input.Enabled = isEdittable;float paddingDp = 1 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);}.more{input.SetBackgroundResource(Resource.Color.edit_text_shape);
// Umrechnung in Pixel
paddingPx = (int)TypedValue.ApplyDimension (ComplexUnitType.Dip, paddingDp, activity.Resources.DisplayMetrics);
input.SetPadding(paddingPx, paddingPx, paddingPx);
Input.Text = txtValue;
input.SetMaxLines(5);
input.SetLines(5);
}
//input.FocusChange += (object transmitter, View.FocusChangeEventArgs e) =>
//{
///Software-Tastatur anfordern.
// 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.NotFocusable | WindowManagerFlags.AltFocusableIm);
adDialog.SetTitle(title);
adDialog.SetMessage(message);
adDialog.SetView(input, paddingPx, 5);
adDialog.SetButton(dismissButtonText, new EventHandler(
(s, args) =>
{
adDialog.Hide();
adDialog.Cancel();
View = adDialog.CurrentFocus;
if (view != null)
{
InputMethodManager imm = (InputMethodManager)activity.GetSystemService(Context.InputMethodService);
imm.HideSoftInputFromWindow(view).WindowToken, HideSoftInputFlags.None);
}
});
adDialog.SetButton2(submitButtonText, new EventHandler(
(s, args) =>
{
as (OnSubmit != null)
OnSubmit(input.Text);
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();
SetDialogTheme(activity, adDialog);
}
catch (exception – ex)
{
throw – ex;
}
returnDialog;
}
Suitability for activities:
this.ShowInputDialog(Name, , Textnotizen bearbeiten, Rückgängig, Speichern, async (fall) =>
{
try
{
//handle zum Speichern
}
catch (Exception – ex)
{
}
}, true);
Fell Glück!
Related Tags: