Android自定义工具栏,以后退/菜单按钮为中心

时间:2018-04-04 07:18:43

标签: android material-design android-toolbar android-constraintlayout

我认为这将是一项简单的任务,但是哦,Android,为什么这么难:facepalm:

我有这个自定义工具栏布局

<android.support.v7.widget.Toolbar
    ....width/height stuff>
    <ConstraintLayout
      ....width/height stuff>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:orientation="vertical"
            android:gravity="center"
            ...start_toStartOf="parent"
            ...end_toEndOf="parent"
            ...top_toTopOf="parent"
            ...bottom_toBottomOf="parent">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Hello World!"/>
        </LinearLayout>
    </ContstraintLayout>
</android.support.v7.widget.Toolbar>

如果我没有放置HomeAsUpButton或菜单项,这可以正常工作。

此屏幕截图显示了当我按下后退按钮时它是如何不居中的 enter image description here

这个后退按钮不是我工具栏布局的一部分,因为我希望我的工具栏实现尽可能“原始”。

后退按钮由

添加
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);

它将我的布局推向右边。

问:有什么方法可以忽略将添加到右侧的左键或菜单按钮,并将TextView置于中心位置?我是否真的必须破解它并制作我自己的左键/菜单式布局?

如果我的问题不清楚,请告诉我,我会详细说明。

提前谢谢。

3 个答案:

答案 0 :(得分:1)

尝试用以下代码替换Toolbar XML代码:

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        android:background="@android:color/transparent"
        android:elevation="1dp"
        app:layout_collapseMode="pin"
        app:theme="@style/toolbarTheme">

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:maxLines="1"
            android:textColor="@color/textPrimary"
            android:textSize="@dimen/font_toolbar"
            tool:text="Title" />
    </android.support.v7.widget.Toolbar>

还设置属性:

actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);

答案 1 :(得分:0)

要删除自动添加的填充,后退按钮添加您只需将以下属性添加到工具栏:

 <android.support.v7.widget.Toolbar
    app:contentInsetStartWithNavigation="0dp"
    app:contentInsetStart="0dp"

答案 2 :(得分:0)

如果您想在工具栏的中心显示TextView,则不应使用默认后退按钮和菜单,因为ToolBar类似于水平LinnerLayout,您的布局始终位于后退按钮和菜单视图。

[[ arrow ][ your layout ][ menu items ]]

你有两种方法来在工具栏的水平方向显示文字:

  1. 当您在ToolBar中更改内容时,您必须找到工具栏的中间位置并手动将文字放在位置middle - (text.width / 2)
  2. 创建自定义布局,将文本放在布局的中心。