2015-10-30 2 views
7

AlertDialogКак изменить TextColor в AlertDialog

Как изменить TextColor в 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(); - builder не может resolv – FredGan

+0

Во-первых: AlertDialog.Builder builder = new AlertDialog.Builder (это), затем: 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 (" Yes "), ..." для меня не работает –

Смежные вопросы