¿Cómo puedo agregar botones personalizados en el diseño de AlertDialog?
Tengo AlertDialog con los botones positivos y negativos. En la disposición de AlertDialog tengo EditText y dos botones (btnAdd1, btnAdd2). Quiero cuando el usuario haga clic en el botón btnAdd1 o btnAdd2 añadir el mismo texto a EditText en AlertDialog (pero no cerrar AlertDialog). ¿Es esto posible hacer en AlertDialog o tengo que usar solamente el diálogo?
Este es el diseño (R.layout.prompt) de AlertDialog:
- Android: Cómo establecer programaticamente el tema de una actividad en Theme.Dialog
- Android: Cerrar ventana de diálogo al tocar
- Cuadro de diálogo de Android en estilo personalizado: quitar la línea azul y establecer el color de ActionBar
- Atributos de estilo de estilo personalizado AlertDialog
- Detectar el botón Atrás pero no descartar el diálogo
<LinearLayout> <EditText android:id="@+id/userInput" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" > <requestFocus /> </EditText> <Button android:id="@+id/btnAdd1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bla" /> <Button android:id="@+id/btnAdd2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bla" /> </LinearLayout>
Y este es el código fuente:
LayoutInflater layoutInflater = LayoutInflater.from(this); View promptView = layoutInflater.inflate(R.layout.prompt, null); AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); alertDialogBuilder.setView(promptView); alertDialogBuilder .setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //... } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alertD = alertDialogBuilder.create(); alertD.show();
Quiero conseguir el acceso al btnAdd1 y al btnAdd2 del diseño. Establezca OnClickListener () en estos dos botones.
- Cómo agregar un SnackBar en la parte inferior de la superposición de un diálogo
- Añadir flecha de herramientas a DialogFragment
- Android: Dialog etc restaurar después de la rotación cambiada
- El cuadro de diálogo de confirmación de Android devuelve true o false
- ¿Alguna manera indolora de activar el teclado virtual para EditText en diálogos?
- Llamar al diálogo de Android sin que desaparezca el fondo
- ¿Agregar nuevas líneas a un recurso de texto en Android?
- Animar un cuadro de diálogo personalizado
El código siguiente inflar una vista de R.layout.prompt
y establecerlo en el AlertDialog. No se utilizarán negative
botones positive
y negative
. Puede configurar los comportamientos onClick
para btnAdd1
y btnAdd2
:
LayoutInflater layoutInflater = LayoutInflater.from(this); View promptView = layoutInflater.inflate(R.layout.prompt, null); final AlertDialog alertD = new AlertDialog.Builder(this).create(); EditText userInput = (EditText) promptView.findViewById(R.id.userInput); Button btnAdd1 = (Button) promptView.findViewById(R.id.btnAdd1); Button btnAdd2 = (Button) promptView.findViewById(R.id.btnAdd2); btnAdd1.setOnClickListener(new OnClickListener() { public void onClick(View v) { // btnAdd1 has been clicked } }); btnAdd2.setOnClickListener(new OnClickListener() { public void onClick(View v) { // btnAdd2 has been clicked } }); alertD.setView(promptView); alertD.show();
Lo que quieres hacer es;
alertD.show(); Button button = (Button)promptView.findViewById(R.id.buttonId); button.setOnClickListener(....)
Utilizando la vista para llamar a findViewById
, en lugar de la actividad, que buscará el identificador en el diseño que se está mostrando.
De acuerdo con este enfoque soy capaz de crear el botón de imagen, pero si quiero descartar o cancelar el diálogo en el botón Cancelar, entonces lo que tengo que hacer ..
public static void alertDialogShow(final Context context, final String resultMobile) { LayoutInflater li = LayoutInflater.from(context); View promptsView = li.inflate(R.layout.prompt, null); AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( context, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT); // set prompts.xml to alertdialog builder alertDialogBuilder.setView(promptsView); final EditText userInput = (EditText) promptsView .findViewById(R.id.editTextDialogUserInput); userInput.setText(resultMobile); userInput.setEnabled(false); btnCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { } });
Usted podría intentar algo como esto:
dialog.setPositiveButton(R.string.positive, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialog.show(); } });
- Android Eclipse Error "Problema de embalaje de Android"
- Cursor finalizado sin cerrar antes () Android