android - 中心操作栏标题

标签 android android-actionbar android-titlebar

如何在 Android 中将 Activity 的操作栏标题居中?

对于这个特定主题,我已经看到很多关于 SO 的问题。每个答案都会回到“使用自定义 View ”和拥有自己的工具栏。

我找到了一个无需创建自定义 View 即可工作的解决方案。

最佳答案

在您的 Activity 中使用此方法:

private void centerTitle() {
    ArrayList<View> textViews = new ArrayList<>();

    getWindow().getDecorView().findViewsWithText(textViews, getTitle(), View.FIND_VIEWS_WITH_TEXT);

    if(textViews.size() > 0) {
        AppCompatTextView appCompatTextView = null;
        if(textViews.size() == 1) {
            appCompatTextView = (AppCompatTextView) textViews.get(0);
        } else {
            for(View v : textViews) {
                if(v.getParent() instanceof Toolbar) {
                    appCompatTextView = (AppCompatTextView) v;
                    break;
                }
            }
        }

        if(appCompatTextView != null) {
            ViewGroup.LayoutParams params = appCompatTextView.getLayoutParams();
            params.width = ViewGroup.LayoutParams.MATCH_PARENT;
            appCompatTextView.setLayoutParams(params);
            appCompatTextView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        }
    }
}

然后,只需在您的 onCreate() 中调用它:

centerTitle();

就是这样!!!

关于android - 中心操作栏标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42465386/

相关文章:

android - getActionBar() 返回 null

android - 更改微调器下拉宽度

javascript - 如何调用平面列表渲染函数中的其他函数?

java - DatePickerDialog setMaxDate 多显示一个月零一天

android - 使用 Checkstyle 的 Android 代码分析

android - 如何扩展 ActionBar

android - 启用/禁用 Android ActionBar.Tab

android - 关于移除 Android 中的 Activity 标题栏

android - 是否可以在没有 FEATURE_CUSTOM_TITLE 的情况下更改 Activity 标题栏的颜色?

android - 我在 recyclerview 中有 3 个按钮,它们的点击事件是在主要 Activity 上设置的,而不是在适配器类中设置的?