如何更改 android material 组件中的工具栏后退按钮图标
How to change toolbar back button icon in android material components
我想将默认的向上导航图标(后退按钮图标)更改为我的自定义图标。我没有使用抽屉,只是一个简单的工具栏和 material 个组件
这可能吗?
如果您使用 Toolbar
更改图标 只需使用:
Toolbar toolbar = findViewById(R.id.xxx);
toolbar.setNavigationIcon(R.drawable.xxxx4);
setSupportActionBar(toolbar);
如果您使用的是 ActionBar
,您可以使用:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.xxx);
您还可以在您的应用主题中更改它覆盖 homeAsUpIndicator
属性:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
<item name="homeAsUpIndicator">@drawable/...</item>
</style>
如果您正在使用 导航组件,目前无法自定义 HomeAsUpIndicator 图标,当您在非根目的地。
有一个解决方法,在您的设置方法之后添加一个 addOnDestinationChangedListener
并检查目标。
类似于:
navController.addOnDestinationChangedListener(
new NavController.OnDestinationChangedListener() {
@Override
public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
if (destination.getId() == R.id.nav_xxx) {
//With ActionBar
//getSupportActionBar().setHomeAsUpIndicator(R.drawable.xxxx);
//With a Toolbar
toolbar.setNavigationIcon(R.drawable.xxxx);
}
}
});
如果您创建了一个工具栏并将其设置为 ActionBar
,如下所示
toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
设置自定义图标有两种选择:
选项 1
toolbar?.setNavigationIcon(R.drawable.homeNavigationIcon)
选项 2
supportActionBar?.setHomeAsUpIndicator(R.drawable.homeNavigationIcon)
我想将默认的向上导航图标(后退按钮图标)更改为我的自定义图标。我没有使用抽屉,只是一个简单的工具栏和 material 个组件
这可能吗?
如果您使用 Toolbar
更改图标 只需使用:
Toolbar toolbar = findViewById(R.id.xxx);
toolbar.setNavigationIcon(R.drawable.xxxx4);
setSupportActionBar(toolbar);
如果您使用的是 ActionBar
,您可以使用:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.xxx);
您还可以在您的应用主题中更改它覆盖 homeAsUpIndicator
属性:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
<item name="homeAsUpIndicator">@drawable/...</item>
</style>
如果您正在使用 导航组件,目前无法自定义 HomeAsUpIndicator 图标,当您在非根目的地。
有一个解决方法,在您的设置方法之后添加一个 addOnDestinationChangedListener
并检查目标。
类似于:
navController.addOnDestinationChangedListener(
new NavController.OnDestinationChangedListener() {
@Override
public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
if (destination.getId() == R.id.nav_xxx) {
//With ActionBar
//getSupportActionBar().setHomeAsUpIndicator(R.drawable.xxxx);
//With a Toolbar
toolbar.setNavigationIcon(R.drawable.xxxx);
}
}
});
如果您创建了一个工具栏并将其设置为 ActionBar
,如下所示
toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
设置自定义图标有两种选择:
选项 1
toolbar?.setNavigationIcon(R.drawable.homeNavigationIcon)
选项 2
supportActionBar?.setHomeAsUpIndicator(R.drawable.homeNavigationIcon)