有没有办法动态设置默认alertDialog框中显示的图标而无需创建自定义图标?例如,我想使用以下alertDialog,方法setIcon()使用存储在其中的路径的uri变量显示我提供的图像。
private void showProductInfo(){
MyProduct myProduct= (MyProduct) myProductGoldenRetriever();
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Product Information");
alertDialog.setMessage(myProduct.getMyProductInfo());
alertDialog.setButton("Back", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showPrompt();
}
});
alertDialog.setIcon(R.drawable.default_img);//<--Here Need to Provide a different image each time
alertDialog.show();
}//endOfShowProductInfo
这是可能的,还是我需要使用适当的.xml布局文件创建自定义alertDialog?
答案 0 :(得分:2)
如果我理解正确,你只想将图标设置为从Uri创建的Drawable?我假设MyProduct
有一个getUri()
方法。如果没有,只需相应地修改它:
Resources res = getResources();
BitmapDrawable icon = new BitmapDrawable(res, myProduct.getUri().toString());
alertDialog.setIcon(icon);
BitmapDrawable
类有一个构造函数,它接受资源和一个表示文件路径的String。如果您使用的是Uri,则可以使用toString()
进行转换。 AlertDialog.Builder
类有一个重载setIcon()
方法,它接受Drawable。只需从路径创建drawable,并将其设置为对话框图标。这没有经过测试(这里没有Eclipse)但应该可以工作。