Android应用程序的工具栏标题垂直居中不正确。

5
我一直在遵循官方文档中有关创建应用程序工具栏的说明。教程说,在按照说明操作后,

“您的应用现在具有基本操作栏。默认情况下,操作栏仅包含应用程序名称和溢出菜单。”

我的应用不是这样的,它看起来像这样: enter image description here

从这个图像中可以看出,我已经进行了一些样式设置,以使颜色符合我的要求,并添加了一个菜单项,只是为了查看它是否正确显示。我稍后会解决如何修复图标的颜色问题。

我的问题是,如您所见,应用程序标题没有竖直居中。它离顶部太近了。这让我感到不爽,因为据我所知,它应该自动居中,我不知道为什么我的没有,但我仍然尝试使用样式自己修复,但完全没有成功。没有样式属性似乎对工具栏标题的填充产生任何影响。我可以在整个工具栏上添加填充,但这也会影响菜单项,而我不想这样做。
我的实现代码看起来像这样:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:fitsSystemWindows="true">
            <android.support.v7.widget.Toolbar
                android:id="@+id/main_activity_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                style="@style/MyToolbarStyle"
                app:theme="@style/MyToolbarTheme" />
    </LinearLayout>

styles.xml:

<resources>

<!-- Base application theme. -->
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="MyToolbarStyle" parent="Base.Widget.AppCompat.Toolbar">
    <item name="android:elevation">4dp</item>
    <item name="android:background">@color/colorPrimary</item>
</style>

<style name="MyToolbarTheme" parent="Base.Widget.AppCompat.Toolbar">
    <item name="android:textColorPrimary">#ffffff</item>
</style>

理想情况下,如果有人能解释一下我哪里出错了,以至于我的应用程序标题不是垂直居中的话,那就太好了,但如果不能的话,有人能告诉我如何在工具栏中只为应用程序标题添加边距或填充,以便我可以尝试自己将其居中吗?
附言:这不是this question的重复-该问题涉及更复杂的自定义工具栏。我的应该是默认实现。
更新:按要求,这是我的MainActivity.java文件的代码:
package com.example.samplescanner;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;

public class MainActivity extends AppCompatActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar MainActivityToolbar = (Toolbar) findViewById(R.id.main_activity_toolbar);
        setSupportActionBar(MainActivityToolbar);


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_items, menu);
        return super.onCreateOptionsMenu(menu);
    }
}

我认为你的工具栏或外部布局缺少android:fitsSystemWindows=“true” - OneCricketeer
你在任何地方设置标题了吗? - just_user
换句话说,它可能是居中的,但整个工具栏都在状态栏后面。 - OneCricketeer
1
@cricket_007 我之前缺少了那个设置,但即使我现在添加了它,问题仍然存在。我将使用完整的activity_main.xml代码更新我的代码。 - Philip Stratford
@just_user 我正在AndroidManifest.xml中进行设置。它并不是真正的“我的应用程序”,我只是为了这个问题而将其更改为那样。 - Philip Stratford
显示剩余6条评论
1个回答

6

我找不到Base.Widget.AppCompat.Toolbar问题的确切来源,但它会改变ToolbarGravity。相反,应该从ThemeOverlay.AppCompat.Dark.ActionBar继承:

<style name="MyTheme.ToolbarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:background">@color/colorPrimary</item>
    <item name="android:elevation">4dp</item>
</style>

在你提到的文档中,他们使用ThemeOverlay.AppCompat.ActionBar,但是Dark版本应该为您设置textColorPrimary属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接