【问题标题】:Why title is not centered in toolbar?为什么标题不在工具栏中居中?
【发布时间】:2017-04-06 17:14:00
【问题描述】:

我正在尝试添加自定义工具栏我想要购物车徽章计数,所以我将相对布局添加到工具栏小部件,当我没有在工具栏中添加相对布局时,标题出现在中心但现在删除相对布局会导致添加徽章时出现问题购物车上的 textview,有人可以建议在这种情况下该怎么做吗? 工具栏.xml

<android.support.v7.widget.Toolbar
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/mytoolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentInsetStart="0dp"
app:contentInsetRight="0dp"
app:contentInsetLeft="0dp"
android:clipToPadding="false"
app:contentInsetStartWithNavigation="0dp"
app:contentInsetEndWithActions="0dp"
android:background="@color/header">

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

<TextView
    android:id="@+id/displaytexttoolbar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_gravity="center"
    android:layout_margin="@dimen/activity_vertical_margin"
    android:text="TEXT_VIEW"
    android:textColor="@color/white" />

<RelativeLayout
    android:layout_gravity="right"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">


    <ImageView
        android:id="@+id/cart_imagetoolbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_gravity="end"
        android:layout_margin="@dimen/activity_vertical_margin"
        android:src="@drawable/cart_mobile_white" />

    <TextView
        android:id="@+id/tvBadge"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_alignParentRight="true"
        android:layout_gravity="right"
        android:background="@drawable/cart_circle_mobile"
        android:gravity="center"
        android:textColor="@color/white"
        android:visibility="visible" />



</RelativeLayout>

</RelativeLayout>

【问题讨论】:

  • 我认为这是因为它居中而不考虑左侧的导航按钮。你是如何在你的代码中设置的?
  • ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this , drawer , toolbar, R.string.navigation_drawer_open , R.string.navigation_drawer_close);抽屉.setDrawerListener(toggle); getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true); toggle.setDrawerIndicatorEnabled(false); toggle.setHomeAsUpIndicator(R.drawable.menu_whitee);切换.syncState();这样我正在设置汉堡包图标@Josh Laird

标签: android xml android-relativelayout android-toolbar


【解决方案1】:

这与您的layout_margin 有关。试试下面的:

<TextView
    android:id="@+id/displaytexttoolbar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginLeft|Right="?attr/actionBarSize"
    android:text="TEXT_VIEW"
    android:textColor="@color/white" />

【讨论】:

  • 谢谢 @Josh Laird 先生,但问题仍然存在,我已在 ques 中附上了屏幕截图。你能建议现在做什么吗?
  • 试试android:layout_marginLeft|Right="?attr/actionBarSize"的边距
  • 尝试 android:layout_marginLeft|Right="?attr/actionBarSize" 作为边距而不是我尝试在 dp 中提供边距我给了 25dp 它暂时将标题设置为居中 @Josh Laird
  • 感谢@Josh Laird 先生的努力
  • 很高兴你明白了:)
【解决方案2】:

contentInsetStart(工具栏中的左侧填充)的默认值为 16dp。

改成

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

【讨论】:

  • 我仍然得到相同的输出..@Pehlaj
  • 感谢您的努力先生@Pehlaj
【解决方案3】:

试试这个代码:

使用Framelayout 代替RelativeLayout 并为标题应用android:gravity="center"

    <android.support.v7.widget.Toolbar 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/mytoolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:contentInsetLeft="0dp"
    android:contentInsetStart="0dp"
    android:theme="@style/ThemeToolbar"
    app:contentInsetLeft="0dp"
    app:contentInsetStart="0dp">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/displaytexttoolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="@dimen/activity_vertical_margin"
            android:gravity="center"
            android:text="TEXT_VIEW"
            android:textColor="@color/color_black" />

        <ImageView
            android:id="@+id/cart_imagetoolbar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_gravity="end"
            android:layout_margin="@dimen/activity_vertical_margin"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/tvBadge"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_alignParentRight="true"
            android:layout_gravity="right"
            android:gravity="center"
            android:src="@mipmap/ic_launcher"
            android:textColor="@color/color_black"
            android:visibility="visible" />
    </FrameLayout>

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

输出

【讨论】:

  • 我已经提到了汉堡图标,它甚至影响了布局,您可以检查问题并恢复吗?@rafsanahmad007
  • 如何影响布局?
  • 我在 ques @rafsanahmad007 中添加了截图
  • 尝试添加:android:paddingLeft="-48dp" android:paddingStart="-48dp"....对于工具栏文本视图..
  • 谢谢@rafsanahmad007 先生,您的建议对我帮助很大,这个填充没有用,但框架布局建议有效。感谢您的努力。
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
相关资源
最近更新 更多