Android -警报对话框中未显示图标

mrzz3bfm  于 2023-03-11  发布在  Android
关注(0)|答案(6)|浏览(180)

我有一个警报对话框,它不显示我使用“setIcon”设置的图标。
我使用Android Studio和Android模拟器API 19/ Android 4.4.2。
我可以运行应用程序,对话框显示没有图标,没有错误。
但Android Studio标记了包含“setIcon”的行,并为我提供了“引入局部变量”和“将方法调用链制作成调用序列”
所以我的问题是:为什么不显示图标?
我的代码:

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

builder

.setMessage("Repeat game?")
.setIcon(android.R.drawable.ic_dialog_alert)         //<--- icon does not show
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        //Yes button clicked, do something

    }
})
.setNegativeButton("No", null)                      //Do nothing on no
.show();
7kjnsjlb

7kjnsjlb1#

你的标题是空的,所以android不会显示它,因此也不会显示任何图标。
将其设置为空字符串:

builder.setTitle("")...<all the other stuff>
laximzn5

laximzn52#

您应该使用类似于以下内容的内容:

builder.setIcon(getResources().getDrawable(android.R.drawable.ic_dialog_alert));

试试这个:)

b4qexyjb

b4qexyjb3#

您只需要添加标题,因为图标的位置在标题旁边。

.setTitle("Attention")
.setIcon(android.R.drawable.ic_dialog_alert)
h7appiyu

h7appiyu4#

可能您还需要设置标题。如果您不喜欢新的布局,您可能想看看这个question

AlertDialog.Builder builder = new AlertDialog.Builder(this );  
builder
    .setMessage("Repeat game?")
    .setTitle("")
    .setIcon(android.R.drawable.ic_dialog_alert)         //<--- icon does not show
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            //Yes button clicked, do something
        }
    })
    .setNegativeButton("No", null)                      //Do nothing on no
    .show();
vdzxcuhz

vdzxcuhz5#

您可以使用dialogBuiler.setView(your_custom_layout)
例如custom_dialog_layout. xml,您可以根据自己的选择进行美化

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="7dp"
        android:orientation="horizontal">
        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:id="@+id/custom_diag_img_view"
            android:src="@android:drawable/ic_dialog_alert"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/custom_diag_title_tv"
            style="@style/TextAppearance.AppCompat.Headline"/>
    </LinearLayout>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/custom_diag_msg_tv"
        android:layout_marginTop="15dp"
        style="@style/TextAppearance.AppCompat.Subhead"/>

</LinearLayout>

Utils.java

public static void showAlertDialog(Context activityContext, Integer iconResource, String title, String message){
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activityContext, R.style.Theme_MaterialComponents_DayNight_Dialog_Alert);
    LinearLayout customLL = (LinearLayout) LayoutInflater.from(activityContext).inflate(R.layout.custom_dialog_layout, null);
    ImageView icon = customLL.findViewById(R.id.custom_diag_img_view);
    if(iconResource != null)
        icon.setImageResource(iconResource);
    android.widget.TextView titleTV = customLL.findViewById(R.id.custom_diag_title_tv);
    titleTV.setText(title);
    TextView msgTV= customLL.findViewById(R.id.custom_diag_msg_tv);
    msgTV.setText(message);
    dialogBuilder
            .setView(customLL)
            .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    //some code
                }
            })
            .show();
}

MyActivity.java

//without title
Utils.showAlertDialog(UploadActivity.this,R.drawable.ic_error, null, getString(R.string.allowed_images));

//with title
Utils.showAlertDialog(UploadActivity.this,R.drawable.ic_error, "Some title, getString(R.string.allowed_images));

您可以添加复选框或其他操作

smdnsysy

smdnsysy6#

AlertDialog.Builder alert =新建的AlertDialog.Builder(主活动.this);

alert.setMessage("clicked button");
            alert.setTitle("Your Title"); 
            alert.setIcon(R.drawable.info);  
            alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            });

            alert.create().show();

如果你想显示图标,首先你必须有一个标题

相关问题