如何在AlertDialog中加载显示从Firebase Realtime Database获取的图片与文本
实现方案
因为你需要加载网络URL对应的图片,所以首先要引入成熟的图片加载框架,这里推荐使用Glide,已经适配了网络加载、缓存、内存优化等场景,无需自己手写网络图片加载逻辑。
步骤1:引入Glide依赖
在module级的build.gradle的dependencies代码块中添加如下依赖,之后同步项目即可:
implementation 'com.github.bumptech.glide:glide:4.15.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.15.1'
步骤2:添加网络权限(未配置的情况下)
在AndroidManifest.xml中添加网络访问权限:
<uses-permission android:name="android.permission.INTERNET" />
步骤3:完整的AlertDialog实现代码
直接替换你现有的弹窗代码即可,注意将R.layout.xxx替换为你自己的自定义布局文件名:
// 1. 加载自定义布局 View dialogView = LayoutInflater.from(context).inflate(R.layout.你的自定义布局文件名, null); // 2. 绑定布局内的控件 ImageView eImageView = dialogView.findViewById(R.id.eImageView); TextView eTextView = dialogView.findViewById(R.id.eTextView); // 3. 设置文本内容 String explainText = list.get(position).getExplaination(); String imageUrl = list.get(position).getImageUrl(); eTextView.setText(explainText); // 4. 加载网络图片到ImageView Glide.with(context) .load(imageUrl) .placeholder(R.mipmap.ic_launcher) // 加载过程中的占位图,可自行替换 .error(R.mipmap.ic_launcher_round) // 加载失败的占位图,可自行替换 .into(eImageView); // 5. 创建并显示弹窗 AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.CustomDialogTheme); builder.setView(dialogView) .setNegativeButton("Close", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); } }); builder.show();
优化建议
- 你自定义布局的根LinearLayout高度可以改为
wrap_content,避免弹窗占满整个屏幕 - 可以把TextView的宽度改为
match_parent,移除多余的translationX属性,避免长文本显示不全
内容的提问来源于stack exchange,提问作者Lav Sharma
相关产品推荐
相关产品推荐

