【问题标题】:Dynamic icon to Menu items in a navigation View in androidandroid中导航视图中菜单项的动态图标
【发布时间】:2015-12-10 15:05:37
【问题描述】:

support.design.widget.NavigationView 在我的应用程序中。我能够将菜单项(图像 + 文本)动态添加到导航视图。图像是使用 SetIcon API 从可绘制添加的。但我现在的问题是我需要添加从服务器动态获取的图像。我浏览了谷歌,但没有找到任何关于如何做到这一点的解决方案。 SetIcon 将仅采用可绘制或资源 id 作为参数。请告诉我如何实现这一目标。

【问题讨论】:

  • 您以什么格式接收图像?
  • 感谢 vguzzi 的回复。我正在获取 jpg 格式的图像。我是否需要将其转换为位图,然后使用 bitmapdrawable 转换为可绘制并将其分配给菜单。
  • 没问题!您不能将 JPEG 存储在您的应用程序中,您是否将其转换为位图?

标签: android image menu navigation-drawer navigationview


【解决方案1】:

要将通过 API 调用检索到的图像添加到您的 NavigationView 中,您必须将该图像转换为 Drawable(您回答了自己的问题!):)。

为此,您首先必须将您的ByteArray 转换为Bitmap,如下所示:

Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata , 0, bitmapdata .length);

然后您可以将 Bitmap 转换为 Drawable,如下所示:

Drawable d = new BitmapDrawable(getResources(), bitmap);

拥有Drawable 后,您可以像这样更新Menu

menu.getItem(0).setIcon(yourNewDrawable);

或者,如果您愿意,可以在 Menu 初始化时保留对 MenuItem 变量的引用,并在您认为合适时更改它(例如当您的 API 调用完成时!)。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    首先从 NavigationView 中获取菜单:

    Menu menu = mNavigationView.getMenu();
    

    然后将你的项目添加到菜单中,记得获取返回的 MenuItem 以便稍后添加图标:

    MenuItem item = menu.add(groupId, menuItemId, Order, "Menu Item 1 Title");
    item.setIcon(R.drawable.ic_some_menu_item_icon); // add icon with drawable resource
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-05
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多