【问题标题】:Toolbar title is not centered工具栏标题未居中
【发布时间】:2016-02-20 01:48:16
【问题描述】:

我在我的应用中添加了Toolbar
为此,我使用以下 xml 代码进行自定义工具栏布局。

Toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar    xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#212E42"
android:minHeight="?attr/actionBarSize">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:id="@+id/lefttoolbarContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/righttoolbarContainer"
        android:background="#212E42">


        <TextView
            android:id="@+id/txtActionBarTitle"
            style="@style/TextViewLargeWhite"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:padding="@dimen/fivedp"
            android:text="demo title for toolbar"
            android:visibility="visible" />


    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/righttoolbarContainer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true">

        <ImageView
            android:id="@+id/ivActionBarRightTwo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="@dimen/fivedp"
            android:contentDescription="@string/empty_description"
            android:padding="@dimen/fivedp"
            android:src="@drawable/ic_chart"
            android:visibility="visible" />

        <ImageView
            android:id="@+id/ivActionBarRightOne"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginRight="@dimen/threedp"
            android:layout_toRightOf="@+id/ivActionBarRightTwo"
            android:contentDescription="@string/empty_description"
            android:padding="@dimen/fivedp"
            android:src="@drawable/ic_settings"
            android:visibility="gone" />



    </RelativeLayout>
</RelativeLayout>

在 Android Studio 输出中,工具栏标题显示在中间,如下图所示。

但是当我运行我的应用程序时,我无法在中心获得工具栏标题,如下所示:

当我在我的应用中动态添加工具栏导航图标时会出现此问题。
添加导航图标后,图标获得空间,工具栏标题移至右侧。

 mToolbar = (Toolbar) findViewById(R.id.toolbar);
 mToolbar.setNavigationIcon(R.drawable.logo)//Toolbar navigation icon will add here
 setSupportActionBar(mToolbar);

编辑: 我想要实现的Toolbar 如下,请查看更新的Toolbat.xml

请帮我让工具栏标题居中!

【问题讨论】:

  • 您是否尝试为您的 TextView 添加一些边距?
  • 你不能这样做,因为主页是图标也在这里占用空间标题在放置图标后放在中心
  • @Orkun Koçyiğit - 我已经尝试将 marginright 添加到 titleTextview ,但它给出的结果类似于 this

标签: android toolbar android-toolbar


【解决方案1】:

您可以删除嵌套的 relativelayout 并将 imageview 添加到 relativelayout lefttoolbarContainer。由于您的标题位于ParentCenter,因此当您在代码中添加图像时(至少在理论上),它不应向右移动。即

工具栏.xml

<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/default_dark_blue"
android:minHeight="?attr/actionBarSize">

<RelativeLayout
    android:id="@+id/lefttoolbarContainer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#212E42">

    <ImageView
        android:id="@+id/navigationIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minWidth="56dp"
        android:scaleType="center"
        android:layout_alignParentLeft="true"/>

    <TextView
        android:id="@+id/txtActionBarTitle"
        style="@style/TextViewLargeWhite"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:padding="@dimen/fivedp"
        android:text="demo title for toolbar"
        android:visibility="visible" />


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

在你的活动/片段中

mToolbar = (Toolbar) findViewById(R.id.toolbar);
ImageView navigationIcon = mToolbar.findViewById(R.id.navigationIcon);
navigationIcon.setImageResource(R.drawable.logo);
setSupportActionBar(mToolbar);

希望对你有帮助..

【讨论】:

  • 我有其他视图要添加到工具栏子视图中,所以我将lefttoolbarContainer 视为RelativeLayout
  • 你能解释一下你想要实现的工具栏视图吗?它的孩子是什么,他们想要他们在哪里?
  • @pRaNaY 你可以在不嵌套 relativelayout 的情况下实现这一点。
【解决方案2】:

尝试更改 textview 属性

android:gravity="center"

用这个:

 android:layout_gravity="center"

【讨论】:

  • 已经是布局的中心位置。见android:layout_centerInParent="true"
  • android:layout_gravity="center" 不适用于RelativeLayout
猜你喜欢
  • 2023-03-28
  • 2017-05-02
  • 1970-01-01
  • 2015-06-09
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多