android 禁用工具栏的向上按钮

ufj5ltwl  于 2023-02-27  发布在  Android
关注(0)|答案(7)|浏览(168)

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

pkwftd7m

pkwftd7m1#

如果您使用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) { ... }
p5cysglq

p5cysglq2#

Alex K所建议的是屏幕底部导航栏中的后退按钮-而不是屏幕左上角的向上图标。
对于ActionBar up图标,您需要添加以下内容:

getActionBar().setDisplayHomeAsUpEnabled(false);

此外,在manifest.xml文件中,如果存在父元数据,则可以删除父元数据:

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

vs91vp4v3#

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

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

sd2nnvve4#

我遇到了类似的问题,空的navigationIcon保持器人留下的空间.
<android.support.v7.widget.Toolbar>的xml中使用app:contentInsetLeft="0dp",它修复了

ep6jt1vc

ep6jt1vc5#

在清单中有两种方式可以使Up导航出现在AppBar中。正如@Kasira所提到的:
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.ParentActivity" />
并且如果<activity>标记包含:android:parentActivityName=".activity.ParentActivtyName"

gkl3eglg

gkl3eglg6#

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

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>
6ioyuze2

6ioyuze27#

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

<item name="navigationIcon">@drawable/tool_bar_title_logo</item>

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

supportActionBar?.setDisplayHomeAsUpEnabled(false) // won't work

它将无法关闭图标的onClick

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

supportActionBar?.setIcon(R.drawable.tool_bar_title_logo) // to set the toolbar icon

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

supportActionBar?.setDisplayHomeAsUpEnabled(false)

相关问题