2012-01-14 15 views
5

È possibile personalizzare i pulsanti positivi e negativi in ​​AlertDialog? Ho bisogno di sostituire l'aspetto predefinito di positivo e negativo con personalizzato.È possibile personalizzare i pulsanti positivi e negativi in ​​AlertDialog?

.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {... 
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {... 

Qualcuno può dirmi come farlo?

+3

Dovrete creare una finestra di dialogo personalizzata. :/Ecco il tutorial più semplice che ho trovato. http://i.thiyagaraaj.com/articles/android-articles/customdialogboxpopupusinglayoutoutandroid – JustinDanielson

risposta

1

se si desidera cambiare loro, io suggerirei di usare l'attività con il layout desiderato e aggiungerli = Dialog nella vostra attività, nel file manifesto

1

se si desidera personalizzare è possibile utilizzare finestra al posto di dialogo allerta ecco il codice di esempio

final Dialog dialog = new Dialog(ThisweekActivity.this, android.R.style.Theme_Translucent_NoTitleBar); 
    View view = LayoutInflater.from(ThisweekActivity.this).inflate(R.layout.issue_cover_prompt_layout, null); 
    view.findViewById(R.id.close_btn).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 
    ImageView img = (ImageView) view.findViewById(R.id.issue_cover_img); 
    img.setImageBitmap(issue.getCoverImage()); 

    dialog.setContentView(view); 
    dialog.show(); 

è possibile impostare impostare il layout di finestra di dialogo e aggiungere click su di esso listner

1

Yuo possibile impostare ogni vista nella finestra di dialogo. È possibile impostare la visualizzazione con due pulsanti e non impostare i pulsanti positivi & negativi.

esempio:

AlertDialog.Builder builder = 
      new AlertDialog.Builder(this); 

View dialogView = LayoutInflater.from(this) 
      .inflate(R.layout.my_layout, null); 

builder.setView(dialogView); 
+0

fuori dal contesto! –

+0

@Jivraj S Shekhawat Ok, qualunque cosa. Se è possibile fornire una risposta migliore, si prega di fare quello –

5
public class ComentarDialog extends DialogFragment{ 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

    builder.setMessage("Mensaje de alerta") 
      .setTitle("Comentar") 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 

       } 
      }) 
      .setNegativeButton("CANCELAR", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 

       } 
      }); 

    return builder.create(); 
} 

@Override 
public void onStart() { 
    super.onStart(); 

    //Personalizamos 

    Resources res = getResources(); 

    //Buttons 
    Button positive_button = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_POSITIVE); 
    positive_button.setBackground(res.getDrawable(R.drawable.btn_selector_dialog)); 

    Button negative_button = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_NEGATIVE); 
    negative_button.setBackground(res.getDrawable(R.drawable.btn_selector_dialog)); 

    int color = Color.parseColor("#304f5a"); 

    //Title 
    int titleId = res.getIdentifier("alertTitle", "id", "android"); 
    View title = getDialog().findViewById(titleId); 
    if (title != null) { 
     ((TextView) title).setTextColor(color); 
    } 

    //Title divider 
    int titleDividerId = res.getIdentifier("titleDivider", "id", "android"); 
    View titleDivider = getDialog().findViewById(titleDividerId); 
    if (titleDivider != null) { 
     titleDivider.setBackgroundColor(color); 
    } 
} 
} 
+0

risposta perfetta. grazie per la condivisione. :) –

+0

FYI 'button.setBackground()' ... richiede il livello API 16 – estoke

Problemi correlati