2015-10-30 197 views
7

AlertDialog如何更改文本顏色在AlertDialog

如何改變文字顏色在AlertDialog?

<item name="android:textColor">@color/black_text</item> 

這隻會改變標題顏色。

ad = new AlertDialog.Builder((new ContextThemeWrapper(context, R.style.DialogTheme))); 
      ad.setTitle(R.string.my_activ_remove_title_dialog); 

      ad.setPositiveButton(R.string.my_activ_remove_dialog, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int arg1) { 
        content.remove(position); 
        notifyItemRemoved(position); 
        notifyItemRangeChanged(position, content.size()); 
       } 

      }); 
      ad.setNegativeButton(R.string.my_activ_cancel_remove_dialog, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int arg1) { 

       } 
      }); 

Alerd Dialog v2

回答

26

,僅改變字體顏色,試試這個:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle(Html.fromHtml("<font color='#FF7F27'>This is a test</font>")); 
    builder.setPositiveButton(Html.fromHtml("<font color='#FF7F27'>Yes</font>"), new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int arg1) { 
      Log.e(LOG_TAG, "Yes"); 
     } 
    }); 
    builder.setNegativeButton(Html.fromHtml("<font color='#FF7F27'>No</font>"), new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int arg1) { 
      Log.e(LOG_TAG, "No"); 
     } 
    }); 
    builder.create(); 
    builder.show(); 

結果:

enter image description here


爲了改變字體顏色和按鈕的背景顏色,試試這個:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage(Html.fromHtml("<font color='#FF7F27'>This is a test</font>")); 
    builder.setCancelable(false); 
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     } 
    }); 
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     } 
    }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
    Button nbutton = alert.getButton(DialogInterface.BUTTON_NEGATIVE); 
    //Set negative button background 
    nbutton.setBackgroundColor(Color.MAGENTA); 
    //Set negative button text color 
    nbutton.setTextColor(Color.YELLOW); 
    Button pbutton = alert.getButton(DialogInterface.BUTTON_POSITIVE); 
    //Set positive button background 
    pbutton.setBackgroundColor(Color.YELLOW); 
    //Set positive button text color 
    pbutton.setTextColor(Color.MAGENTA); 

結果:

Result:


如果你想改變分頻器顏色,試試這個:

 AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Test Title"); 
     builder.setMessage(Html.fromHtml("<font color='#FF7F27'>This is a test</font>")); 
     builder.setCancelable(false); 
     builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
      } 
     }); 
     builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
      } 
     }); 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
     try { 
      Resources resources = dialog.getContext().getResources(); 
      int alertTitleId = resources.getIdentifier("alertTitle", "id", "android"); 
      TextView alertTitle = (TextView) dialog.getWindow().getDecorView().findViewById(alertTitleId); 
      alertTitle.setTextColor(Color.MAGENTA); // change title text color 

      int titleDividerId = resources.getIdentifier("titleDivider", "id", "android"); 
      View titleDivider = dialog.getWindow().getDecorView().findViewById(titleDividerId); 
      titleDivider.setBackgroundColor(Color.YELLOW); // change divider color 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
     Button nbutton = dialog.getButton(DialogInterface.BUTTON_NEGATIVE); 
     //Set negative button background 
     nbutton.setBackgroundColor(Color.MAGENTA); 
     //Set negative button text color 
     nbutton.setTextColor(Color.YELLOW); 
     Button pbutton = dialog.getButton(DialogInterface.BUTTON_POSITIVE); 
     //Set positive button background 
     pbutton.setBackgroundColor(Color.YELLOW); 
     //Set positive button text color 
     pbutton.setTextColor(Color.MAGENTA); 

這是我的示例代碼,但如果您想更改分隔線顏色,請考慮以「int titleDividerId」開頭的部分代碼。

結果:

This is the result of the code


如果您想自定義AlertDialog了很多。比如加入一些複選框以自定義背景色,用這個辦法:

AlertDialog.Builder alert = new AlertDialog.Builder(this); 
     LinearLayout mainLayout  = new LinearLayout(this); 
     mainLayout.setOrientation(LinearLayout.VERTICAL); 

     LinearLayout layout1  = new LinearLayout(this); 
     layout1.setOrientation(LinearLayout.HORIZONTAL); 
     CheckBox cb1 = new CheckBox(getApplicationContext()); 
     cb1.setText("Easy"); 
     layout1.addView(cb1); 
     layout1.setBackgroundColor(Color.BLUE); 
     layout1.setMinimumHeight(50); 

     LinearLayout layout2  = new LinearLayout(this); 
     layout2.setOrientation(LinearLayout.HORIZONTAL); 
     layout2.addView(new TextView(this)); 
     CheckBox cb2 = new CheckBox(getApplicationContext()); 
     cb2.setText("Normal"); 
     layout2.addView(cb2); 
     layout2.setBackgroundColor(Color.CYAN); 
     layout2.setMinimumHeight(50); 

     LinearLayout layout3  = new LinearLayout(this); 
     layout3.setOrientation(LinearLayout.HORIZONTAL); 
     CheckBox cb3 = new CheckBox(getApplicationContext()); 
     cb3.setText("Hard"); 
     layout3.addView(cb3); 
     layout3.setBackgroundColor(Color.GREEN); 
     layout3.setMinimumHeight(50); 

     mainLayout.addView(layout1); 
     mainLayout.addView(layout2); 
     mainLayout.addView(layout3); 
     alert.setTitle("Custom alert demo"); 
     alert.setView(mainLayout); 
     alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.cancel(); 
      } 
     }); 
     alert.setPositiveButton("Done", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       Toast.makeText(getBaseContext(), "done", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     alert.show(); 

結果:

The result

首先,我創建了一個主要佈局(垂直),你在代碼中看到。然後,爲每個複選框創建一個水平佈局。在這種情況下,您可以使用元素的顏色和字體(複選框,項目等)。我希望它有幫助。

+0

AlertDialog alert = builder.create(); - 建設者不能解決 – FredGan

+0

首先:AlertDialog.Builder builder = new AlertDialog.Builder(this);然後:AlertDialog alert = builder.create(); – Mohammad

+0

你有:「import android.app.AlertDialog;」在你的導入? – Mohammad

2

您創建對話框後:

AlertDialog dialog = builder.create(); 
dialog.show(); 
Button buttonPositive = dialog.getButton(DialogInterface.BUTTON_POSITIVE); 
buttonPositive.setTextColor(ContextCompat.getColor(this, R.color.green)); 
Button buttonNegative = dialog.getButton(DialogInterface.BUTTON_NEGATIVE); 
buttonNegative.setTextColor(ContextCompat.getColor(this, R.color.red)); 
+0

它適合我。但我不知道爲什麼「builder.setPositiveButton(Html.fromHtml(」「),...」不適用於我 –