禁用工具栏的向上按钮

Law*_*nez 4 android

如何禁用ic_launcher旁边工具栏中的默认"UP"按钮?我想只在左边留下ic_launcher.

在此输入图像描述

zas*_*nyy 7

如果您正在使用Toolbar(android.support.v7.widget.Toolbar或本机)以禁用导航按钮,请致电:

toolbar.setNavigationIcon(null);
Run Code Online (Sandbox Code Playgroud)

来自文档:

 /**
 * Set the icon to use for the toolbar's navigation button.
 * ...
 *  @param icon Drawable to set, may be null to clear the icon
 */
 public void setNavigationIcon(@Nullable Drawable icon) { ... }
Run Code Online (Sandbox Code Playgroud)

  • 这是***隐藏***而不是***禁用***.在这种情况下,这两个术语完全不同.禁用意味着它暂时因某些原因暂时不可用,但稍后可用.我真的不明白Android的设计,它太复杂了,即使是非常简单的东西也让我们做了很多黑客攻击.我必须说这只是一个糟糕的设计.程序员***主要需要专注于业务逻辑,而不是所有这些应该由Android核心库编写者轻松准备/提供的小事. (3认同)

Hao*_*min 1

对于这个问题,我相信这是因为您使用 作为navigationIcon属性来设置 上的图标toolbar

<item name="navigationIcon">@drawable/tool_bar_title_logo</item>
Run Code Online (Sandbox Code Playgroud)

当用作navigationIcon属性设置toolbar图标时:

supportActionBar?.setDisplayHomeAsUpEnabled(false) // won't work
Run Code Online (Sandbox Code Playgroud)

它将无法关闭图标的onClick 。


相反,请使用setIcon(R.drawable.tool_bar_title_icon)设置图标toolbar

supportActionBar?.setIcon(R.drawable.tool_bar_title_logo) // to set the toolbar icon
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令禁用它:

supportActionBar?.setDisplayHomeAsUpEnabled(false) 
Run Code Online (Sandbox Code Playgroud)