如何在弹出对话框中为 Imageview 设置图像

How to setimage for an Imageview in a popup dialog

这是我的 Popup class,

public class Popup {

    public void showDialog(Activity activity, String url){
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.popup_playerstats);

        ImageView imageFirst= (ImageView) dialog.findViewById(R.id.img_First);

        ImageView dialogButton = (ImageView) dialog.findViewById(R.id.close);
        dialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        dialog.show();

    }
}

而我的 Fragment 的 onClick 方法是,

public void onClick(final View v) {
    Popup alert = new Popup();
    switch (v.getId()) {
        case R.id.button_1:
            alert.showDialog(getActivity(),url);
            break;
        case R.id.button_2:
            alert.showDialog(getActivity(),url1);
            break;
        default:
            // some code here
            break;
    }
 }

我需要在 ImageView imageFirst 上使用字符串变量 urlurl1 和 setimage。

求助,我怎么会这样?

首先将 Glide 依赖项添加到 build.gradle 部分。

dependencies {
    // glide
    compile 'com.github.bumptech.glide:glide:3.7.0'
}

然后

ImageView imageFirst= (ImageView) dialog.findViewById(R.id.img_First);
Glide.with(activity).load(url)
                .thumbnail(0.5f)
                .crossFade()
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(imageFirst);

dependencies

中添加以下内容
compile 'com.github.bumptech.glide:glide:3.7.0'

并用于在 ImageView 中设置

Glide.with(mContext)
                        .load(url)
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .dontAnimate()
                        .placeholder(ContextCompat.getDrawable(mContext, R.mipmap.ocassion_placeholder))
                        .into(imageFirst);

在build.gradle文件中添加依赖

compile 'com.github.bumptech.glide:glide:3.7.0'

使用对话框扩展弹出窗口class

public class Popup extends Dialog{

private Context mContext;
private  ImageView imageFirst;
private String url;

public Popup(Context context, String url) {
    super(context);
    mContext = context;
    this.url = url;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.popup_playerstats);

    imageFirst= (ImageView) findViewById(R.id.img_First);
    Glide.with(mContext)
            .load(url)
            .error(R.drawable.error)
            .into(imageFirst);


    ImageView dialogButton = (ImageView) findViewById(R.id.close);
    dialogButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });
}
}

在你的 activity 中,onClickEvent

public void onClick(final View v) {
    Popup popup;
    switch (v.getId()) {
        case R.id.button_1:
            popup = new Popup(mContext, url);
            break;
        case R.id.button_2:
            popup = new Popup(mContext, url1);
            break;
        default:
            // some code here
            break;
        popup.setCancelable(false);
        popup.show();
    }
}

添加另一个变量以传递到 showDialog 方法以从 onClick 方法传递图像的位置 ID。然后在showDialog方法中,使用这个id设置为图片资源。

点击时:

public void onClick(final View v) {
    Popup alert = new Popup();

    switch (v.getId()) {
        case R.id.button_1:
            alert.showDialog(getActivity(),url,R.drawable.img1);
            break;
        case R.id.button_2:
            alert.showDialog(getActivity(),url1,R.drawable.img2);
            break;
        default:
            // some code here
            break;
    }
 }

显示对话框:

public class Popup {

    public void showDialog(Activity activity, String url, int id){
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.popup_playerstats);

        ImageView imageFirst= (ImageView) dialog.findViewById(R.id.img_First);
        imageFirst.setImageResource(id);

        ImageView dialogButton = (ImageView) dialog.findViewById(R.id.close);
        dialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        dialog.show();

    }
}