带有文本和图标的 Android 警报对话框

mva*_*sco 1 android

我想要一个AlertDialog带有文本和图标的。我创建了两个数组,一个用于对话框项,另一个用于对话框项图标,但它不起作用。到目前为止,这是我的代码:

CharSequence options[] = new CharSequence[] {"RETEN", "ACCIDENTE VIAL", "INUNDACION", "ABUSO", "ASALTO / VIOLENCIA"};
builder = new AlertDialog.Builder(getActivity(), android.R.style.Theme_DeviceDefault_Settings);
builder.setCancelable(false);
Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.alertas);
builder.setIcon(icons);

builder.setTitle(getContext().getString(R.string.select_alert_type));
builder.setItems(options, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // the user clicked on options[which]

        //1.RECUPERAR OPCION SELECCIONADA

        if (which == 0){ ... }

        ...

    });
Run Code Online (Sandbox Code Playgroud)

我在行收到警告:

builder.setIcon(icons);
Run Code Online (Sandbox Code Playgroud)

KeL*_*yue 5

您可以尝试setViewAlertDialog.Builder.

1.添加一个alerdialog_layout作为视图。

2.ListView在里面使用。

3.setView用于向其添加数据。

笔记

如果要使用动态图标,可以使用BaseAdapter.

alerdialog_layout

<?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="match_parent"
          android:orientation="vertical">

<ListView
    android:id="@+id/list_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"></ListView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

item_dialog

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:padding="10dp"
    xmlns:android="http://schemas.android.com/apk/res/android">

<ImageView
    android:id="@+id/iv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_launcher_round"/>

<TextView
    android:id="@+id/tv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="right"
    android:text="text1"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Java代码

/**
 * add dialog
 */
protected void addDailog() {
    CharSequence options[] = new CharSequence[]{"RETEN", "ACCIDENTE VIAL", "INUNDACION", "ABUSO", "ASALTO / VIOLENCIA"};
    View view = LayoutInflater.from(this).inflate(R.layout.alerdialog_layout, null);
    ListView listView = view.findViewById(R.id.list_view);
    ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.item_dialog, R.id.tv1, options){};
    listView.setAdapter(arrayAdapter);
    AlertDialog dialog = new AlertDialog.Builder(this)
            .setTitle("AlertDialog")
            .setMessage("AlertDialog Message")
            .setView(view)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                }
            })
            .setNegativeButton("No", null)
            .create();
    dialog.show();
}
Run Code Online (Sandbox Code Playgroud)

输出 在此处输入图片说明