如何在工具栏中居中ImageView?

一直试图将我的工具栏中的徽标居中。 当我导航到下一个活动时,会出现“up ADVance”图标,它会将我的徽标略微向右推。 如何在不删除可用性图标的情况下将我的徽标保留在工具栏的中心

这是我的工具栏标签

   

在javadoc中 ,它说:

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

这意味着除非您创建自定义toolbar或删除icon ,否则无法执行此操作。

你可以这样做,因为它对我有用:

      

将图像设置为工具栏的背景,而不是子视图。

  

您可以通过编程方式执行,这是我设法在工具栏中完全居中徽标的唯一方法。

添加到您的活动:

 @Override public void onWindowFocusChanged(boolean hasFocus){ // set toolbar logo to center programmatically Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar); ImageView logo = (ImageView) findViewById(R.id.logo); int offset = (toolbar.getWidth() / 2) - (logo.getWidth() / 2); // set logo.setX(offset); } 

和您的toolbar_main.xml:

      

我回答这个问题有点迟,但有很好的解决方案

           

这是我的toolbar_background.xml drawable

          

在这里输出

对于使用矢量绘图SVG图像的开发人员。
这可以是工具栏的背景, drawable_toolbar_background.xml

          

是的,您必须修复drawable中item的宽度和高度 ,尽管vector drawable已经具有固定大小。
这是你的工具栏视图,

  

您需要将AppBarLayout小部件与工具栏小部件一起使用,并将contentInsetStart设置为0dp 。 否则工具栏将在开始时大约8dp的填充(如果需要,插入导航按钮)

这是工作代码:

      

另外,请确保使用?attr/actionBarSize作为工具栏的高度,因为这是默认的actionBar高度,并将调整为所有不同的屏幕尺寸。