【问题标题】:ActionBar in Android overrides the BottomNavigationAndroid 中的 ActionBar 会覆盖 BottomNavigation
【发布时间】:2022-10-04 18:02:20
【问题描述】:

当尝试将图标更改为下载的可绘制对象(或在运行时实际更改为任何其他图标)时,图标会在 ActionBar 上更改一次。

我实际上想删除 ActionBar 并只留下底部导航(选项卡)用于导航,但无论我在做什么,图标只会在 ActionBar 上发生变化。

bottom_nav_menu.xml 里面的项目:

    <item
    android:id="@+id/navigation_notifications"
    android:icon="@drawable/ic_dashboard_black_24dp"
    android:title="@string/title_notifications"
    app:showAsAction="ifRoom"/>

更改图标的代码:

@Override
public boolean onPrepareOptionsMenu (Menu menu){
    menu.clear();
    getMenuInflater().inflate(R.menu.bottom_nav_menu, menu);
    menu.getItem(2).setIcon(this.bitmap_pic);

    Log.e(TAG, "Icon Changed");
    return super.onPrepareOptionsMenu(menu);
}

结果 - 图标在 BottomNav 上保持空白,但出现在 ActionBar 上。

预期结果:BottomNav 图标将是右上角显示的图像。

谢谢

编辑!

膨胀包含 BottomNavView 的 main_activity 布局后,问题已得到修复

现在图片没有正确显示的问题,附上截图(图像是灰色的,而不是像第一张图片中的 ActionBar 那样显示图标):

编辑 2

图标仍然是灰色的,而不是显示位图图片。 添加:

MenuItemCompat.setIconTintMode(bottomNavigationView.getMenu().getItem(2), PorterDuff.Mode.CLEAR);

但它仍然显示如下图所示

【问题讨论】:

  • 值得一提的是,setTitle 也不适用于 BottomNav。但 setBackground 有效。

标签: java android android-studio


【解决方案1】:

我不确定是否为底部导航栏调用了onPrepareOptionsMenu

您应该必须从该活动的onCreate 方法更新导航菜单图标。

参考下面的代码,

val menu = navigation.menu
val menuItem = menu.findItem(R.id.navigation_notifications) // find particular menu-item using its ID.
menuItem?.icon = this.bitmap_pic

灰色图标色调的解决方案, 添加以下行。

MenuItemCompat.setIconTintMode(menuItem, PorterDuff.Mode.DST)

【讨论】:

  • 实际上发现了问题, setContentView(R.layout.activity_main) 解决了这个问题。我已经编辑了问题
  • @JamesGyps 更新了我的答案。
  • A 仍然没有工作,更新了我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
相关资源
最近更新 更多