将自定义图像添加到AlertDialog [ANDROID]

时间:2013-05-09 14:09:22

标签: android dialog imageview android-alertdialog builder

我在尝试将图像添加到AlertDialog时遇到了麻烦。这个图像并不总是一样,每次都不一样。

我正在尝试做的是将图像添加到AlertDialog(如果它可以作为imageView,而不是作为对话框的图标)知道他的名字。麻烦的是我有一千张图片。

1)因此,当调用builder.setIcon(int iconid)时,我不知道如何传递iconid而不是图片的名称。考虑到我每次都使用不同的图像。

2)有关如何将图像作为imageView的任何建议(考虑到与此对话框相关的布局)?

UPDATE 我有String s = scanQR.substring(start, 21);,这是使用QR-CODE阅读器进行扫描的结果。

此字符串包含我想要放入AlertDialog的图像的名称。 现在,这是Dialog的代码:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {


AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();

    builder.setView(inflater.inflate(R.layout.dialog_single_work, null))

               //HERE IS THE ICON (BETTER WILL BE AN IMAGEVIEW, BUT DUNNO HOW TO DO IT)
           .setIcon()
           .setPositiveButton("POS", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {

        }
    })
    .setNegativeButton("NEG", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {

        }
    });
return builder.create();
}
}

方法.setIcon需要或int(iconid)或drawable对象。但我所拥有的只是图像的名称(String s)。我该如何解决?

1 个答案:

答案 0 :(得分:1)

builder.setIcon();实际上为AlertDialog设置了一个图标,该图标位于对话框标题的左侧。据我了解,您想要在对话框中添加图像,而不是图标。为此,您应该在对话框中添加自定义视图:

View mView = View.inflate(this, R.layout. dialog_single_work, null);
ImageView mImage = (ImageView) mView.findViewById(R.id.image);
// use this ImageView to set your image
builder.setView(mView);

并在其布局中添加ImageView,您可以在其中设置图片。这是你想要实现的目标吗?

修改 做类似的事情:

public void showDialog(int result){
     switch(result){
     case 0:
        mImageView.setImageResource(R.drawable.my_icon);
      break;
     case 1:
        mImageView.setImageResource(R.drawable.my_second_icon);
      break;
      // and so on... or do it with string or whatever is your response.
     }
}

Edit2:您可以使用以下字符串从资源获取图片:

String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());