如何解决如何将图像从 url 加载到 BottomNavigationView 菜单项图标
我想将 url 中的图像加载到 bottomnavigationview 的菜单项图标中。与 instagram 一样,我们希望在我们的菜单之一中显示个人资料图像,该图像可能会在从不同的可用个人资料切换时发生变化。 目前,我正在尝试下面的代码,但它不会每次都加载图像。
val menu = mViewDataBinding?.bnvNavigation?.menu
val menuItem = menu?.findItem(R.id.menu_profile)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
menuItem?.setIconTintList(null)
menuItem?.setIconTintMode(null)
}
Glide.with(this)
.asBitmap()
.load(profilePic)
.apply(
RequestOptions.circleCropTransform()
.placeholder(R.drawable.user_profile_icon_updated)
)
.into(object :
CustomTarget<Bitmap>(UIHelper.dpToPx(this,24),UIHelper.dpToPx(this,24)) {
override fun onResourceReady(resource: Bitmap,transition: Transition<in Bitmap>?) {
menuItem?.icon = BitmapDrawable(resources,resource)
}
override fun onLoadCleared(placeholder: Drawable?) {
}
})
解决方法
我建议您使用芯片导航并创建自定义底部导航,它比默认的android底部导航更好,更容易...
如果您有兴趣学习,可以使用本教程 https://www.youtube.com/watch?v=DQtdOSN21lQ&feature=emb_logo 和图书馆 https://github.com/ismaeldivita/chip-navigation-bar
如果你有任何问题,标记我来回答你
,以上代码按预期工作,只是将应用程序上下文传递给 Glide,Glide.with(App.instance)
App 是我的应用类
val menu = mViewDataBinding?.bnvNavigation?.menu
val menuItem = menu?.findItem(R.id.menu_profile)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
menuItem?.setIconTintList(null)
menuItem?.setIconTintMode(null)
}
Glide.with(App.instance)
.asBitmap()
.load(profilePic)
.placeholder(getProfilePlaceholderFilled())
.error(getProfilePlaceholderFilled())
.apply(
RequestOptions.circleCropTransform().placeholder(getProfilePlaceholderFilled())
)
.into(object :
CustomTarget<Bitmap>(UIHelper.dpToPx(this,80),UIHelper.dpToPx(this,80)) {
override fun onResourceReady(
resource: Bitmap,transition: Transition<in Bitmap>?
) {
menuItem?.icon = BitmapDrawable(
resources,resource
)
}
override fun onLoadFailed(errorDrawable: Drawable?) {
menuItem?.icon = errorDrawable
}
override fun onLoadCleared(placeholder: Drawable?) {
}
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。