答案 0 :(得分:1)
您可以这样做:
BottomNavigationView navigation;
然后在你的onCreate:
navigation = findViewById(R.id.navigation);
Menu a = navigation.getMenu();
MenuItem b = a.findItem(R.id.profile_menu);
if(userloggedIn){
b.setIcon(R.drawable.icons_logged_in);
}
else{
b.setIcon(R.drawable.icon_logged_out);
}
如果您想从URL加载,可以使用Glide或Picasso。
答案 1 :(得分:1)
目前,尚无合适的解决方案,但是您可以执行以下操作。为我工作。
..........
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:elevation="0dp"
app:itemBackground="@color/bottomMenuColor"
app:itemHorizontalTranslationEnabled="false"
app:itemTextAppearanceActive="@style/BottomNavigationView"
app:itemTextAppearanceInactive="@style/BottomNavigationView"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/main_menu" />
<ImageView
android:id="@+id/imgView"
android:layout_width="@dimen/scale_30dp"
android:layout_height="@dimen/scale_30dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/scale_40dp"
android:src="@drawable/temp_person" />
</RelativeLayout>
.......
答案 2 :(得分:0)
我使用此代码使其工作。 (科特琳)
导航是BottomNavigationView
val menu = navigation.menu
val menuItem = menu.findItem(R.id.my_account)
Glide.with(this)
.asBitmap()
.load("https://my_account_image_url")
.apply(RequestOptions
.circleCropTransform()
.placeholder(R.drawable.ic_avatar))
.into(object : SimpleTarget<Bitmap>() {
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
menuItem?.icon = BitmapDrawable(resources, resource)
}
})
答案 3 :(得分:0)
您可以使用Glide在底部导航视图中设置个人资料图像。在设置配置文件图像之前,需要将图像加载为位图。然后,将位图转换为Drawable类型以设置项目图标。
这是完成的方式。
首先在应用程序级别build.gradle
调用implementation 'com.github.bumptech.glide:glide:4.9.0'
然后单击立即同步。
然后,在BottomNavigationView所在的活动中,您可以执行类似的操作。
Glide.with(getApplicationContext()).asBitmap().load(*yourImageUrl*)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
Drawable profileImage = new BitmapDrawable(getResources(), resource);
bottomNavigationView.getMenu().getItem(*yourItemIndex*).setIcon(profileImage);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
}
参考文献:
答案 4 :(得分:0)
在AppCompat 1.1.0中,您还需要为此删除色调。
val menu = navigation.menu
val menuItem = menu.findItem(R.id.profile_menu_item)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
menuItem?.iconTintList = null
menuItem?.iconTintMode = null
}
Glide.with(this)
.asBitmap()
.load("url")
.apply(RequestOptions
.circleCropTransform()
.placeholder(R.drawable.placeholder))
.into(object : CustomTarget<Bitmap>(24.toPixel(), 24.toPixel()) {
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
menuItem?.icon = BitmapDrawable(resources, resource)
}
override fun onLoadCleared(placeholder: Drawable?) {}
})