【问题标题】:How to change AlertDialog view background color?如何更改 AlertDialog 视图背景颜色?
【发布时间】:2017-10-07 15:39:18
【问题描述】:

我想知道如何更改警报对话框中的灰色?我试过了:

layout.setBackgroundResource(R.color.Aqua);

没有用。有任何想法吗?

我使用以下代码创建了 AlertDialog:

public class CustomInputDialog{

    private OnDialogClickListener listener;
    private Context context;
    private String title;
    private String message;
    EditText input;
    LinearLayout layout;

    public interface OnDialogClickListener {
        void onDialogOKClick(String value);
    }

    public CustomInputDialog(String title, String message, Context context, OnDialogClickListener listener) {

        super();
        this.title = title;
        this.message = message;
        this.context = context;
        this.listener = listener;

        layout = new LinearLayout(context);
        layout.setOrientation(LinearLayout.VERTICAL);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        params.setMargins(20, 10, 20, 10);

        input = new EditText(context);

        InputFilter[] filters = new InputFilter[1];
        filters[0] = new InputFilter.LengthFilter(20);
        input.setFilters(filters);

        layout.addView(input, params);

    }

    private void dialog(){

        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setCancelable(true);
        builder.setView(layout);
        builder.setTitle(title);
        builder.setMessage(message); 
        builder.setInverseBackgroundForced(true);
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
                String value = input.getText().toString();
                listener.onDialogOKClick(value);
                dialog.dismiss();
          }
        });
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
              }
        });
        AlertDialog alert = builder.create();
        alert.show();
    }

}

【问题讨论】:

标签: java android android-layout android-alertdialog


【解决方案1】:

您可以像这样以编程方式设置自定义视图..

LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.dialog_layout, (ViewGroup) getCurrentFocus());
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(dialoglayout);
builder.show();

然后获取组件的引用

e.g. Button btn = (Button) dialoglayout.findViewById(R.id.button_id);

【讨论】:

【解决方案2】:

您必须创建custom dialog 才能更改背景颜色,请参阅此link

【讨论】:

    【解决方案3】:
    <style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="android:background">@color/myColor</item>
    </style>
    
    AlertDialog.Builder builder = new AlertDialog.Builder(Datetimeactivity.this,R.style.AlertDialogTheme);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 2018-06-11
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      相关资源
      最近更新 更多