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

时间:2017-12-21 01:10:45

标签: 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){ ... }

        ...

    });

我收到了警告:

builder.setIcon(icons);

1 个答案:

答案 0 :(得分:2)

您可以尝试在setView中使用AlertDialog.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>

<强> 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>

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();
}

<强>输出 enter image description here