You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android中通过代码动态修改ActionBar的居中标题文本?

实现不同Activity动态修改自定义ActionBar标题

实现步骤

  1. 给自定义Toolbar的TextView添加ID
    修改custom_toolbar.xml,为TextView设置唯一ID,方便代码中定位控件:
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center">

    <TextView
        android:id="@+id/toolbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Awesome App
Blah Blah Blah"
        android:textStyle="bold"
        android:textSize="20dp"
        android:textColor="@color/gold_yellow" />

</LinearLayout>
  1. 在Activity中动态设置标题
    在每个Activity的onCreate方法里,获取自定义Toolbar中的TextView,设置对应页面的专属文本:
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);        
    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    // 获取自定义Toolbar视图
    View customToolbar = getSupportActionBar().setCustomView(R.layout.custom_toolbar);
    // 找到标题TextView
    TextView toolbarTitle = customToolbar.findViewById(R.id.toolbar_title);
    // 设置当前Activity的标题内容
    toolbarTitle.setText("首页\n欢迎使用");
}

其他Activity只需修改setText的参数即可,比如设置页面:

toolbarTitle.setText("设置页面\n个性化配置");

优化方案:封装到BaseActivity

如果多个Activity都使用自定义ActionBar,可以把逻辑封装到基类,减少重复代码:

public class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupCustomActionBar();
    }

    private void setupCustomActionBar() {
        getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        View customToolbar = getSupportActionBar().setCustomView(R.layout.custom_toolbar);
        TextView toolbarTitle = customToolbar.findViewById(R.id.toolbar_title);
        toolbarTitle.setText(getToolbarTitle());
    }

    // 子类重写该方法返回对应标题
    protected String getToolbarTitle() {
        return "默认标题\n默认副标题";
    }
}

子类Activity只需重写getToolbarTitle方法:

public class HomeActivity extends BaseActivity {
    @Override
    protected String getToolbarTitle() {
        return "首页\n欢迎使用";
    }
}

内容的提问来源于stack exchange,提问作者anta40

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:12:39