如何在不同Activity中配置Toolbar显示不同按钮?解决重复Toolbar问题
问题解决思路
一、SyncActivity出现两个Toolbar的原因及解决
出现双Toolbar的核心问题是系统默认ActionBar和你自定义的Toolbar同时显示了。大概率是SyncActivity使用的主题没禁用系统自带ActionBar,再加上你在布局里添加了自定义Toolbar并调用setSupportActionBar(toolbar),就会导致两者叠加。
解决步骤:
- 打开
res/values/styles.xml,给SyncActivity(或全局)设置不带ActionBar的主题,比如:<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <!-- 其他主题配置项 --> </style> - 确认
activity_sync.xml里只有一个自定义Toolbar,无重复布局。 - 在SyncActivity的
onCreate方法里正常初始化Toolbar:Toolbar toolbar = findViewById(R.id.toolbar_sync); setSupportActionBar(toolbar); // 设置返回按钮 getSupportActionBar().setDisplayHomeAsUpEnabled(true); // 设置页面标题 getSupportActionBar().setTitle("同步页面");
二、主Toolbar图标在其他Activity不显示的原因
每个Activity的Toolbar都是独立实例,MainActivity里配置的图标、菜单按钮不会自动同步到其他页面:
- 主Toolbar的导航图标/Logo:需要在SyncActivity里单独调用API设置,比如要显示返回按钮用
getSupportActionBar().setDisplayHomeAsUpEnabled(true);要设置自定义Logo用toolbar.setLogo(R.drawable.your_logo)。 - 主Toolbar的右侧按钮:那是在MainActivity里通过
onCreateOptionsMenu加载的专属菜单,SyncActivity需要自己重写该方法添加对应按钮,示例:
对应的@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_sync, menu); return true; }menu_sync.xml里只保留你需要的那个右侧按钮即可。
内容的提问来源于stack exchange,提问作者markzzz
相关产品推荐
相关产品推荐

