启用后退按钮时,工具栏标题不在中心

时间:2016-07-26 06:19:41

标签: android android-toolbar

我试图在中心显示我的工具栏标题并执行此操作我使用了此答案中给出的方法: - Toolbar Center title

但是,当我通过以下代码启用activity中的后退按钮时:

toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mActionBar = getSupportActionBar();
mActionBar.setDisplayHomeAsUpEnabled(true);
mActionBar.setDisplayShowHomeEnabled(true);

工具栏的标题不会显示在中间,而是偏向右侧偏心。

如何在没有 后退按钮或菜单栏的情况下实现居中标题

7 个答案:

答案 0 :(得分:37)

在工具栏中添加TextView&不要忘记在TextView中设置以下属性。

  

android:layout_marginRight =“?android:attr / actionBarSize”
  
   OR

  android:layout_marginEnd =“?android:attr / actionBarSize”

代码段:

<android.support.v7.widget.Toolbar
    android:id="@+id/custom_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize"
    android:background="@android:color/holo_red_dark">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="abc"
        android:textColor="@android:color/white"
        android:textSize="20sp"
        android:layout_marginRight="?android:attr/actionBarSize"
        android:gravity="center"/>

</android.support.v7.widget.Toolbar>

有关详细信息,请参阅this教程。

答案 1 :(得分:4)

如果后面的箭头 未显示,则占位符图片与后退箭头的大小相同,并将其设置为 不可见 显示 时, 消失了 为我做了诀窍。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/blue"
    android:minHeight="?attr/actionBarSize"
    app:contentInsetEnd="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetStart="0dp"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<ImageView
    android:id="@+id/iv_placeholder"
    android:layout_width="72dp"
    android:layout_height="48dp"
    android:src="@drawable/ic_actionbar_hamburger"
    android:visibility="invisible"/>


<TextView
    android:id="@+id/logo_tv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginEnd="?attr/actionBarSize"
    android:gravity="center"
    android:text=""
    android:textColor="@color/white"
    android:textStyle="normal"/>

</android.support.v7.widget.Toolbar>

enter image description here

enter image description here

答案 2 :(得分:2)

只需将android:paddingEnd =“72dp;添加到工具栏布局。

p1

一个简单的解决方法

答案 3 :(得分:0)

不要设置这样的预言

mActionBar = getSupportActionBar();
mActionBar.setDisplayHomeAsUpEnabled(true);
mActionBar.setDisplayShowHomeEnabled(true);

这样做

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        // Title and subtitle
        toolbar.setTitle(R.string.about_toolbar_title);
        toolbar.setSubtitleTextColor(Color.WHITE);
        toolbar.setTitleTextColor(Color.WHITE);
        toolbar.setBackgroundColor(getResources().getColor(
                R.color.themeToolbarColor));
        toolbar.setNavigationIcon(R.drawable.ic_action_back);
        toolbar.setNavigationOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
               finish();  // to go back  finish() will do your work.
                //mActionBar.setDisplayHomeAsUpEnabled(true);
                //mActionBar.setDisplayShowHomeEnabled(true);
            }
        });

答案 4 :(得分:0)

当您使用后退按钮作为导航图标时,标题未居中的原因是,导航图标以AppCompatImageButton表示,并被添加到与标题TextView相同的布局中。使用Arshak's answer并不是一个坏主意,但是?android:attr/actionBarSize并不是定义结束边距的好方法。由于操作栏的高度可能与图标的宽度相同,因此它可能起作用,但可能不适用于所有设备。在material design guidelines中指定此大小可能是个好主意。

答案 5 :(得分:0)

只需使用以下属性,将您的内容放在XML的工具栏标签内的子视图中即可:

android:layout_width="wrap_content"
android:layout_gravity="center"

工具栏状态的官方文档:

一个或多个自定义视图。该应用程序可以向工具栏添加任意子视图。它们将出现在布局中的此位置。如果子视图的LayoutParams指示Gravity#CENTER_HORIZONTAL的Gravity值,则在测量所有其他元素之后,该视图将尝试在工具栏剩余的可用空间内居中。

这对我有用,将androidx.appcompat.widget.Toolbar与子视图一起使用。

答案 6 :(得分:0)

在我的例子中,我在工具栏中使用了一个图像视图,我不想在活动的片段之间导航时四处移动。 我把它放在工具栏上,让它居中。我使用了约束布局

<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.material.appbar.MaterialToolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">



</com.google.android.material.appbar.MaterialToolbar>

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toTopOf="@id/toolbar"
    app:layout_constraintBottom_toBottomOf="@id/toolbar"
    android:src="@drawable/ic_logo"
    tools:ignore="ContentDescription" />
 ...

</androidx.constraintlayout.widget.ConstraintLayout>