Android:文本视图的工具栏不太居中

Android:文本视图的工具栏不太居中,android,android-toolbar,Android,Android Toolbar,我在工具栏中居中文本视图时遇到问题 当文本变得太长时,它看起来是这样的 如您所见,文本向右偏多,或者左侧导航图标有一些填充 下面的图像具有布局边界 当文本很小时,就可以了 同样,如果可选徽标可见(扳手只是一个占位符),则在第一张图像中看到的文本显示良好 这是代码。如果您需要查看其他内容,请留下评论 活动\u main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:

我在工具栏中居中文本视图时遇到问题

当文本变得太长时,它看起来是这样的

如您所见,文本向右偏多,或者左侧导航图标有一些填充

下面的图像具有布局边界

当文本很小时,就可以了

同样,如果可选徽标可见(扳手只是一个占位符),则在第一张图像中看到的文本显示良好

这是代码。如果您需要查看其他内容,请留下评论

活动\u 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:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.ersen.toolbarcentreproblem.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:background="@color/colorPrimary">


        <ImageView
            android:id="@+id/logo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:padding="10dp"
            android:visibility="gone"
            app:srcCompat="@drawable/ic_build_black_24dp"
            tools:visibility="visible"/>

        <TextView
            android:text="Set Holiday Set Holiday Set Holiday Set Holiday"
            android:textColor="@android:color/white"
            android:textAllCaps="true"
            android:layout_gravity="center"
            android:maxLines="1"
            android:ellipsize="end"
            android:gravity="center"
            android:textSize="18sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

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



    <TextView
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Hello World!" />
</LinearLayout>
我尝试过的

  • 内容插页
  • contentInsetRight
  • 心满意足
  • contentInsertStart
工具栏上的所有设置为0dp都无效

我还尝试在文本视图上应用填充,但这在文本较小时会导致问题

编辑1:TextView宽度设置为与父项匹配

同样的问题

编辑2:尝试Narendra Sorathiya解决方案




我在探索@Mike M对制作的看法

只需将徽标ImageView的可见性设置为“不可见”,而不是“消失”

在我的工具栏上我有这个

<ImageView
    android:id="@+id/logo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end"
    android:padding="10dp"
    android:visibility="gone"
    app:srcCompat="@drawable/ic_build_black_24dp"
    tools:visibility="visible"/>

<android.support.v4.widget.Space
    android:id="@+id/space"
    android:layout_width="25dp"
    android:layout_height="25dp"
    android:layout_gravity="end"
    android:visibility="gone"
    tools:visibility="visible"/>

<TextView        
    android:id="@+id/toolbar_title"
    android:text="Set Holiday Holiday Set Set S"
    android:textColor="@android:color/white"
    android:textAllCaps="true"
    android:gravity="center"
    android:layout_gravity="center"
    android:layout_centerInParent="true"
    android:maxLines="1"
    android:ellipsize="end"
    android:textSize="18sp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

如果徽标可见或工具栏具有菜单项,则会隐藏空间视图,否则会将其设置为可见

这解决了我的问题,文本现在在所有情况下都显示在中心

这其中有一个问题

mToolbar.getMenu().size() > 0

由于此代码是活动的onResume,它将在片段的onCreateOptions菜单之前调用,因此当它实际上为真时,它可能最终为假,因此我将进一步探讨此问题

我正在探讨@Mike M关于制作的内容

只需将徽标ImageView的可见性设置为“不可见”,而不是“消失”

在我的工具栏上我有这个

<ImageView
    android:id="@+id/logo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end"
    android:padding="10dp"
    android:visibility="gone"
    app:srcCompat="@drawable/ic_build_black_24dp"
    tools:visibility="visible"/>

<android.support.v4.widget.Space
    android:id="@+id/space"
    android:layout_width="25dp"
    android:layout_height="25dp"
    android:layout_gravity="end"
    android:visibility="gone"
    tools:visibility="visible"/>

<TextView        
    android:id="@+id/toolbar_title"
    android:text="Set Holiday Holiday Set Set S"
    android:textColor="@android:color/white"
    android:textAllCaps="true"
    android:gravity="center"
    android:layout_gravity="center"
    android:layout_centerInParent="true"
    android:maxLines="1"
    android:ellipsize="end"
    android:textSize="18sp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

如果徽标可见或工具栏具有菜单项,则会隐藏空间视图,否则会将其设置为可见

这解决了我的问题,文本现在在所有情况下都显示在中心

这其中有一个问题

mToolbar.getMenu().size() > 0

由于此代码是活动的onResume,因此将在片段的onCreateOptions菜单之前调用它,因此当它实际上为true时,它可能最终为false,我将对此进行更多探索

只需将您的
徽标
图像视图
可见性设置为
不可见
,而不是
消失
@MikeM。嗨,谢谢你的回复。这在某些情况下可以工作,但在另一些情况下,我可能会有一个膨胀的菜单,不确定是否要对其进行编码。将您的
设置假日
文本视图
宽度更改为
匹配\u parent
@Ironman Hi感谢您的回复。我试着匹配你的父母,我得到了同样的问题。我上传了一个屏幕截图。奇怪的是,如果你假装导航图标不在那里,文本实际上是居中的,因此出于某种原因,它没有考虑导航图标,只是将你的
徽标
图像视图
可见性
设置为
不可见
,而不是
消失
@MikeM。嗨,谢谢你的回复。这在某些情况下可以工作,但在另一些情况下,我可能会有一个膨胀的菜单,不确定是否要对其进行编码。将您的
设置假日
文本视图
宽度更改为
匹配\u parent
@Ironman Hi感谢您的回复。我试着匹配你的父母,我得到了同样的问题。我上传了一个截图。奇怪的是,如果你假装导航图标不在那里,文本实际上是居中的,因此出于某种原因,它没有考虑导航图标。我拿走了部分代码,它似乎减少了右侧导航图标和文本之间的间距。嗨,谢谢,我将代码粘贴到我的项目中,文本仍然不居中,请参阅我的编辑2,其中有一个屏幕截图。我拍摄了部分代码,似乎缩小了右侧导航图标和文本之间的间距。您好,谢谢,我将代码粘贴到我的项目中,文本仍然不居中,请参阅我的编辑2,其中有一个屏幕截图
mToolbar.getMenu().size() > 0