Toolbar设为ActionBar后不显示标题,是否存在类型不匹配?
解决Toolbar作为ActionBar时不显示应用名称的问题
嘿,别担心,你的Toolbar类型完全没问题——代码里的android.support.v7.widget.Toolbar和布局文件里的是同一个类,类型不匹配的怀疑可以直接排除!
之所以Toolbar没显示应用名称,是因为默认情况下,当你调用setSupportActionBar(tb)把Toolbar设为ActionBar后,系统并不会自动帮你加载应用名称,需要手动配置来触发显示。下面给你几种靠谱的解决方案:
方案一:在Activity代码中手动设置标题
这是最直接的方式,通过getSupportActionBar()来设置标题,既可以写死文本,也可以从strings.xml中读取应用名称(推荐后者,便于多语言适配):
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_assessments); // 获取Toolbar实例 Toolbar tb = findViewById(R.id.toolbarMain); // 将Toolbar设置为ActionBar setSupportActionBar(tb); // 设置应用标题 getSupportActionBar().setTitle(getString(R.string.app_name)); }
方案二:在Toolbar布局中直接添加自定义标题TextView
如果想要更灵活地定制标题的样式(比如字体大小、颜色、位置),可以直接在Toolbar布局里嵌入一个TextView:
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar android:id="@+id/toolbarMain" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" android:theme="@style/AppTheme"> <!-- 自定义标题TextView --> <TextView android:id="@+id/toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name" android:textColor="@android:color/white" android:textSize="18sp" android:textStyle="bold"/> </android.support.v7.widget.Toolbar>
这种方式下,你还可以通过代码动态修改这个TextView的内容,自由度更高。
方案三:通过主题配置确保标题可见
检查你的styles.xml中的AppTheme,确保没有隐藏标题的配置,同时添加显示标题的属性:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- 其他主题属性 --> <!-- 针对原生ActionBar的配置 --> <item name="android:displayOptions">showTitle</item> <!-- 针对AppCompat的兼容配置 --> <item name="displayOptions">showTitle</item> </style>
不过这种方式需要配合代码中的setSupportActionBar(tb)一起生效,优先级不如前两种方案直接。
核心问题总结:Toolbar作为ActionBar使用时,默认不会自动加载应用名称,和你怀疑的类型不匹配完全无关,只要按照上面的任意一种方法配置,就能正常显示标题啦!
内容的提问来源于stack exchange,提问作者android_monstertjie
相关产品推荐
相关产品推荐

