在默认的alertDialogs上动态使用setIcon()?

时间:2011-01-04 15:23:31

标签: android icons set uri alertdialog

有没有办法动态设置默认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?

1 个答案:

答案 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)但应该可以工作。