¿Cómo crear una preferencia personalizada con un botón neutral?
Utilizo el código de abajo para crear una preferencia personalizada. El archivo de diseño xml tiene un Button
, EditText
y TextView
. Este diseño personalizado aparece dentro de una Alert
con los botones "Aceptar" y "Cancelar". Todo esto funciona bien.
Me gustaría añadir un tercer botón (un botón neutral) al lado de los botones "Aceptar" y "Cancelar" He experimentado con la clase AlertBuilder
pero no puedo imaginar cómo incorporar tanto mi diseño personalizado xml como un botón neutral.
- ¿Cuál es la mejor manera de tratar con el objeto JSON?
- Atributo de visibilidad en las preferencias xml no funciona? (Android 2.3)
- Preferencias de Android, cómo establecer la dependencia de las preferencias personalizadas
- Android PreferencesActivity para crear una preferencia MODE_WORLD_WRITEABLE entre aplicaciones
- Uso de un tema para la pantalla de preferencias
¿Cómo se puede hacer esto?
Actualmente …
public class MelsMessage extends DialogPreference { Button bMessage; EditText eMessage; TextView tMessage; public MelsMessage(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } protected View onCreateDialogView() { LayoutInflater layoutInflater = LayoutInflater.from(getContext()); View view = layoutInflater.inflate(R.layout.dialog_pref_mess, null); //UI elements bMessage = (Button) view.findViewById(R.id.buttonMessage); eMessage = (EditText) view.findViewById(R.id.edittextMessage); tMessage = (TextView) view.findViewById(R.id.textviewMessage); return view; } }
- Dependencia de ListPreference
- Implementar una RadioButtonPreference en Android
- Android preferencias compartidas ejemplo de altas puntuaciones?
- Fragmento de configuración de Android
- Valor de conjunto de preferencias compartidas de android
- Cómo instanciar el diseño para las preferencias personalizadas, utilizando android: atributo de diseño
- ¿Cómo personalizar el tema de la pantalla de preferencias para que parezca eso?
- ¿Cómo se selecciona la opción de ListPreference?
Veo que su pregunta es un poco antigua y tal vez ya tiene la respuesta a su pregunta, pero aquí hay una solución para su clase que amplía DialogPreference.
Primero tiene que reemplazar el método onPrepareDialogBuilder
en su clase MelsMessage :
@Override protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { super.onPrepareDialogBuilder(builder); builder.setNeutralButton("hello", this); }
this
en el método setNeutralButton
es la interfaz DialogInterface.OnClickListener
que implementa la clase DialogPreference .
Lo último que tienes que hacer es sobreescribir el método onClick
en tu clase MelsMessage :
@Override public void onClick(DialogInterface dialog, int which) { super.onClick(dialog, which); switch (which) { case DialogInterface.BUTTON_POSITIVE: // do things for the right button break; case DialogInterface.BUTTON_NEGATIVE: // do things for the left button break; default: // do things for the center button break; } }
Si quieres manejar el clic en otra clase todo lo que tienes que hacer es implementar DialogInterface.OnClickListener
en esta clase.
Espero que esto te ayudará. Aclamaciones.
Cuando se sobreescribe onCreateDialogView
y no se establece el setPositiveButton
y setNegativeButton
el botón ok y cancelar debe desaparecer, ¿no? Porque en ese método está reemplazando el diseño predeterminado y estableciendo un personalizado.
Si ese es el caso, entonces usted debe crear su propio diseño de fondo personalizado con 3 botones y añadirlo en el inflado. Intenta buscar e implementar la "ButtonBar inferior" que tiene toda la implementación necesaria, porque no veo en los documentos ningún método o una forma de implementar el botón neutral como en un diálogo normal.
Puede crear cuadro de diálogo personalizado con 3 botones o escribir código como
Dialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); Dialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancle", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { }}); Dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "Do Nothing" new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { }});
- Actividad de pin de Android en el arranque
- Cómo combinar dos cadenas con la posición aleatoria android