【发布时间】:2015-03-20 18:08:47
【问题描述】:
如何禁用 ic_launcher 旁边工具栏中的默认“向上”按钮?我只想把 ic_launcher 留在左边。
【问题讨论】:
标签: android
如何禁用 ic_launcher 旁边工具栏中的默认“向上”按钮?我只想把 ic_launcher 留在左边。
【问题讨论】:
标签: android
Alex K 建议的是屏幕底部导航栏中的“后退”按钮,而不是屏幕左上角的“向上”图标。
对于 ActionBar 向上图标,您需要添加以下内容:
getActionBar().setDisplayHomeAsUpEnabled(false);
此外,在您的 manifest.xml 文件中,您可以删除父元数据(如果有):
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.ParentActivity" />
【讨论】:
将此代码插入到要从工具栏中隐藏 UP 按钮的 Activity:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// remove UP button
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
}
【讨论】:
如果您使用Toolbar(android.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) { ... }
【讨论】:
SupportActionBar.SetHomeButtonEnabled,但它什么也没做。
我遇到了类似的问题,空的navigationIcon持有左边的空间。
在 <android.support.v7.widget.Toolbar> 的 xml 中使用 app:contentInsetLeft="0dp" ,它修复了
【讨论】:
清单中有两种方式导致向上导航出现在 AppBar 中。正如@Kasira 所说:
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.ParentActivity" />
如果<activity> 标签包含:android:parentActivityName=".activity.ParentActivtyName"
【讨论】:
我在网上做了很多搜索,但找不到任何解决此问题的方法。所以,我在源代码中翻了一下,得出了这个解决方案:
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>
【讨论】: