如何居中工具栏后退按钮?

mew*_*ewa 33 android android-actionbaractivity material-design android-toolbar

我在尝试将支持工具栏上的后退按钮居中时遇到问题.我在ActionBarActivity中使用它.

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:toolbar="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    toolbar:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    toolbar:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
Run Code Online (Sandbox Code Playgroud)

并在Activity中设置向上导航,onCreate()如下所示:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

getSupportActionBar().setTitle(R.string.title_activity_scanner);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)

但是,我得到的是: 没有居中的后退按钮截图 如您所见,后退按钮放错了位置

编辑:问题似乎在于?attr/actionBarSize设置为40dp 的自定义值,但是,现在结果证明,它是错误放置的标题.

Ric*_*hez 82

来自developer.android.com:

工具栏支持比ActionBar更集中的功能集.从开始到结束,工具栏可能包含以下可选元素的组合:

导航按钮.这可能是应用程序选择的向上箭头,导航菜单切换,关闭,折叠,完成或其他字形.此按钮应始终用于访问工具栏容器内的其他导航目标及其指示的内容,或以其他方式保留工具栏指示的当前上下文.如果设置,导航按钮在工具栏的最小高度内垂直对齐.

因此,如果将minHeight属性设置为与工具栏高度(layout_height)相同,则后退箭头将垂直居中.

  • 感谢您简短而明智的回答 (3认同)
  • 必须添加 `android:minHeight="@null"` 来取消来自工具栏样式 `style="@style/Widget.MaterialComponents.Toolbar"` 的 `minHeight` (2认同)

Iva*_*sov 12

如果您有非标准的工具栏高度,现在将后退按钮(2k20)居中,androidx Toolbar您可以使用该buttonGravity属性。

这允许您使用wrap_content而不是特定的高度(minHeight不允许您这样做):

<androidx.appcompat.widget.Toolbar
   app:buttonGravity="center_vertical"
   android:layout_height="wrap_content"
   ... />
Run Code Online (Sandbox Code Playgroud)