将图像添加到工具栏的中心

时间:2015-10-12 12:52:07

标签: android toolbar

我在我的appliaction中使用工具栏而不是actionabar。工具栏工作正常,但问题是我希望应用程序徽标出现在工具栏的中心。如果没有显示菜单项,图像将位于中心工具栏,但如果我将搜索或刷新菜单项添加到工具栏,图像也会移动。我希望工具栏始终位于中心

代码

<android.support.v7.widget.Toolbar
                android:id="@+id/toolbar_home"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/pink"
                android:minHeight="56dp"
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:contentInsetEnd="0dp"
                app:contentInsetStart="0dp">

                <RelativeLayout
                    android:id="@+id/rl_toolbar_main"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    >


                    <ImageView
                        android:id="@+id/tv_home_header"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:src="@drawable/image"
                        android:drawablePadding="10dp"
                         />


                </RelativeLayout>

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

4 个答案:

答案 0 :(得分:5)

使用具有中心重力的位图可作为工具栏背景帮助您创建所需的效果。如,

让我们假设您的图片居中为 centeree.png ,并将其包含在 drawable / toolbar_background.xml

<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@android:drawable/centeree"
    android:gravity="center" />

您可以将 toolbar_background.xml 指定为布局中工具栏的背景

<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="?attr/actionBarSize"
        android:background="@drawable/toolbar_background">

另外,作为替代方案,您可以在两侧使用9个可绘制的可拉伸区域。

答案 1 :(得分:2)

你不能因为

而这样做
  

一个或多个自定义视图。应用程序可能会向工具栏添加任意子视图。它们将出现在布局中的这个位置。如果子视图的Toolbar.LayoutParams指示CENTER_HORIZONTAL的重力值,则在测量完所有其他元素后,视图将尝试以工具栏中剩余的可用空间为中心。

答案 2 :(得分:0)

一种简单的方法,虽然它可能不是正确的方法。

我将右侧边距设置为与汉堡包图标相同的宽度。然后在我的dimens.xml中我想要的其他一切。如果要在右侧添加操作项,可能需要进行调整。

@ dimen / app_bar_padding_right = 72dp

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:paddingTop="@dimen/app_bar_padding"
            android:paddingBottom="@dimen/app_bar_padding"
            android:paddingLeft="@dimen/app_bar_padding"
            android:paddingRight="@dimen/app_bar_padding_right"
            android:src="@drawable/nav_bar_logo"
            android:contentDescription="@string/app_name" />

答案 3 :(得分:-1)

将这些属性添加到ImageView ...

        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"