studio programacion herramientas fundamentos con avanzado aplicaciones android android-edittext margin padding alertdialog

programacion - manual de android en pdf



Agregue un margen mayor a EditText en Android AlertDialog (3)

Aquí está la función de extensión de Kotlin para que el Constructor configure la vista de Edición de Texto.

val Float.toPx: Int get() = (this * Resources.getSystem().displayMetrics.density).toInt() fun AlertDialog.Builder.setEditText(editText: EditText): AlertDialog.Builder { val container = FrameLayout(context) container.addView(editText) val containerParams = FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT ) val marginHorizontal = 48F val marginTop = 16F containerParams.topMargin = (marginTop / 2).toPx containerParams.leftMargin = marginHorizontal.toInt() containerParams.rightMargin = marginHorizontal.toInt() container.layoutParams = containerParams val superContainer = FrameLayout(context) superContainer.addView(container) setView(superContainer) return this }

Ejemplo de uso

val editText = EditText(this) AlertDialog.Builder(this) .setTitle("Group Name") .setEditText(editText) .setPositiveButton("OK", { _: DialogInterface, _: Int -> // Do your work with text here val text = editText.text.toString() Toast.makeText(applicationContext, text, Toast.LENGTH_SHORT).show() }) .setNegativeButton("Cancel", null) .show()

Resultado

Tengo un EditText dentro de un AlertDialog. Se parece a esto.

Vea dónde dice tddjdjck y cómo está sangrado bastante. Eso es lo que quiero (utilicé setPadding con los setPadding izquierdo y derecho a 50), pero también quiero que la línea azul debajo esté sangrada. ¿Cómo puedo hacer eso?

El código que estoy usando está abajo:

final AlertDialog.Builder alert = new AlertDialog.Builder(thisActivity); final EditText input = new EditText(thisActivity); input.setSingleLine(); input.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 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();

Gracias


Puede pasar el parámetro de espaciado en el método setView

alert.setView(view ,left_space , top_space , right_space , bottom_space);

Así que, en tu caso puedes probar esto.

alert.setView(input , 50 ,0, 50 , 0);


final AlertDialog.Builder alert = new AlertDialog.Builder(thisActivity); final EditText input = new EditText(thisActivity); input.setSingleLine(); FrameLayout container = new FrameLayout(thisActivity); FrameLayout.LayoutParams params = 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);

Asegúrese de agregar otra línea a su archivo de recursos dimens.xml, como

<dimen name="dialog_margin">20dp</dimen>