我想要一个带有文字和图标的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);
答案 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();
}