2012-07-11 30 views
8

Quiero personalizar un cuadro de diálogo en Android. Yo sé cómo configurar el título de diálogo:Cómo establecer el icono de diálogo en Android

dialog.setTitle("O message"); 

Ahora quiero establecer el icono delante del título. ¿Cómo puedo lograr esto?

Dialog dialog; 
dialog = new Dialog(this); 
dialog.setContentView(R.layout.layouterror22);  
dialog.setTitle("O message"); 

Respuesta

23

Puede añadir un icono con el siguiente código:

Dialog dialog = new Dialog(context); 

dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON); 
dialog.setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.your_icon); 
dialog.setContentView(R.layout.custom_dialog); 
dialog.setTitle("Dialog Title"); 

dialog.show(); 

Ver "Icons in custom dialogs android".

+3

El orden de las líneas: es muy importante ya que las características se deben solicitar antes de que cualquier contenido se inserte en el cuadro de diálogo. – msysmilu

+2

El orden de las líneas: ¡es muy importante! dialog.setFeatureDrawableResource (Window.FEATURE_LEFT_ICON, R.drawable.your_icon); debería llamarse después de setContentView –

4
dialog.setIcon(Drawable icon); 

o

dialog.setIcon(int resId); 

Espero que esto ayude.

+0

obtengo dialog.setIcon pero no soporto (Nota: este dialgo personaliza) esto es may code: Diálogo de diálogo; \t dialog = new Dialog (this); \t \t dialog.setContentView (R.layout.layouterror22); dialog.setTitle ("O mensaje"); –

+0

La pregunta es sobre Diálogo, no AlertDialog. La respuesta anterior no es aplicable a Dialog. Ver comentario de Carl Bosch arriba. – user1608385

3

Puede ser que usted debe utilizar un AlertDialog. Si lo hace, solo

AlertDialog.Builder b = new AlertDialog.Builder(yourContext); 
b.setIcon(yourIcon); 
/* add other properties thanks to b.set... */ 
b.create().show(); 

Espero que esto te ayude.

+0

obtengo dialog.setIcon pero no soporto (Nota: este dialgo personaliza) este es el código: diálogo de diálogo; \t dialog = new Dialog (this); \t \t dialog.setContentView (R.layout.layouterror22); dialog.setTitle ("O mensaje"); –

+1

'AlertDialog' parece necesitar' setTitle() 'aplicado para' setIcon() 'para que funcione. – jdv

0

Si está utilizando un viewPager con fragmentos, puede llamar a desde onBackPressed() del MainActivity. Esto es lo que he hecho, nunca he tenido ningún problema:

@Override 
    public void onBackPressed() { 

     try { 
      if (getFragmentManager().getBackStackEntryCount() > 1) { 
       FragmentManager.BackStackEntry first = getFragmentManager().getBackStackEntryAt(0); 
       getFragmentManager().popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE); 
      } else 
       safeExit(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 


    private void safeExit() { 
     new Builder(this).setIcon(R.drawable.ic_launcher).setTitle("Exit!").setMessage(
       "Close Application?").setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       MainActivity.this.finish(); 
      } 
     }).setNegativeButton("No", null).show(); 
    } 
Cuestiones relacionadas