求助:自定义Toolbar在其他Activity中无法显示
我之前也踩过类似的坑,别慌,咱们一步步排查可能的原因:
先确认其他Activity的布局有没有正确引入Toolbar
主Activity加了Toolbar不代表其他Activity也配置了哦。要确保每个需要显示Toolbar的Activity布局里,都有完整的Toolbar标签,还要记得根布局加上xmlns:app="http://schemas.android.com/apk/res-auto"命名空间(不然app:开头的样式属性会失效,Toolbar可能因为样式问题看起来像没显示)。示例代码:<!-- 根布局要加xmlns:app属性 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="#fff" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> <!-- 其他布局内容 --> </LinearLayout>其他Activity的代码有没有完成Toolbar初始化
主Activity里你做了setSupportActionBar(toolbar),其他Activity也要照做才行,不然Toolbar只是个普通View,不会被当作ActionBar展示:Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); // 如果需要返回箭头,再加这句 getSupportActionBar().setDisplayHomeAsUpEnabled(true);别漏了
setSupportActionBar(toolbar)这关键一步!检查Activity的主题是否为NoActionBar
所有用自定义Toolbar的Activity,主题必须去掉系统默认的ActionBar,不然会和自定义Toolbar冲突。在AndroidManifest.xml里给对应Activity设置主题:<activity android:name=".YourOtherActivity" android:theme="@style/AppTheme.NoActionBar"/>对应的主题样式要定义成:
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"> <!-- 你的自定义主题属性 --> </style>排查Toolbar的可见性和布局层级
偶尔会不小心把Toolbar的android:visibility设成gone,或者被其他View完全覆盖。可以在布局编辑器里看看Toolbar是不是在最上层,或者在代码里手动设置toolbar.setVisibility(View.VISIBLE)确认。
如果排查完这些还是没解决,把其他Activity的布局和代码片段贴出来,咱们再细化分析~
内容的提问来源于stack exchange,提问作者ora

