我在我的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>
答案 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"