【问题标题】:Disable Toolbar's Up Button禁用工具栏的向上按钮
【发布时间】:2015-03-20 18:08:47
【问题描述】:

如何禁用 ic_launcher 旁边工具栏中的默认“向上”按钮?我只想把 ic_launcher 留在左边。

【问题讨论】:

标签: android


【解决方案1】:

Alex K 建议的是屏幕底部导航栏中的“后退”按钮,而不是屏幕左上角的“向上”图标。

对于 ActionBar 向上图标,您需要添加以下内容:

    getActionBar().setDisplayHomeAsUpEnabled(false);

此外,在您的 manifest.xml 文件中,您可以删除父元数据(如果有):

        <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.ParentActivity" />

【讨论】:

  • 它不起作用 getSupportActionBar().setDisplayHomeAsUpEnabled(false);
  • 您是否还检查了清单文件中是否有父活动?
  • 我没有那个 xml sn-p。我想我必须创建一个基于工具栏的主题来删除那个向上按钮的东西
  • hmm... 好的,最后一件事:检查你的清单文件中是否有这个,如果有则删除它:android:parentActivityName="SOME_ACTIVITY"
  • 没什么。我猜我只是切换回 ActionBar。
【解决方案2】:

将此代码插入到要从工具栏中隐藏 UP 按钮的 Activity:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // remove UP button
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(false);
    }
}

【讨论】:

    【解决方案3】:

    如果您使用Toolbarandroid.support.v7.widget.Toolbar 或本机)来禁用导航按钮,只需调用:

    toolbar.setNavigationIcon(null);
    

    来自文档:

     /**
     * 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) { ... }
    

    【讨论】:

    • 这是隐藏而不是禁用。在这种情况下,这两个术语完全不同。禁用意味着它只是由于某种原因暂时不可用,但稍后将可用。我真的不明白 Android 的设计,它太复杂了,即使是像这样非常简单的东西也会让我们做很多 hack。我必须说这只是一个糟糕的设计。程序员主要需要专注于业务逻辑,而不是所有这些本应由 Android 核心库编写者轻松准备/提供的琐事。
    • 另外,最适合用来禁用主页按钮的方法是SupportActionBar.SetHomeButtonEnabled,但它什么也没做。
    【解决方案4】:

    我遇到了类似的问题,空的navigationIcon持有左边的空间。

    &lt;android.support.v7.widget.Toolbar&gt; 的 xml 中使用 app:contentInsetLeft="0dp" ,它修复了

    【讨论】:

      【解决方案5】:

      清单中有两种方式导致向上导航出现在 AppBar 中。正如@Kasira 所说:

      <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.ParentActivity" />

      如果&lt;activity&gt; 标签包含:android:parentActivityName=".activity.ParentActivtyName"

      【讨论】:

        【解决方案6】:

        我在网上做了很多搜索,但找不到任何解决此问题的方法。所以,我在源代码中翻了一下,得出了这个解决方案:

        val field = Class.forName("androidx.appcompat.widget.Toolbar").getDeclaredField("mNavButtonView")
        field.isAccessible = true
        val toolbarUpButton = field.get(findViewById(R.id.main_toolbar)) as? ImageButton
        toolbarUpButton?.isEnabled = false
        

        这不会隐藏向上按钮,而是禁用它,如果您想指示该按钮已禁用,您可以使用以下选择器作为可绘制对象的颜色:

        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:color="@color/enabled" android:state_enabled="true"/>
            <item android:color="@color/disabled" android:state_enabled="false"/>
            <item android:color="@color/enabled" />
        </selector>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多