Android API 21工具栏填充

如何摆脱Android SDK API版本21(支持库)的新工具栏中的额外填充?

我正在谈论这张照片上的红色箭头: 在这里输入图像描述

这是我正在使用的代码:

<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:background="?attr/colorPrimary" android:padding="0dp" android:layout_margin="0dp"> <RelativeLayout android:id="@+id/action_bar_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="0dp" android:padding="0dp" android:background="#000000"> <Spinner android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout> </Toolbar> 

正如你所看到的,我已经把所有相关的填充设置为0,但是Spinner周围仍然有填充。 我做错了什么,或者我需要做些什么来摆脱额外的填充?

编辑有些人质疑我为什么要这样做。

根据材料devise规格,微调器应该从左侧72dp 降序

我需要中和谷歌已经放在那里的填充,以便正确放置我的微调: 降序

编辑2

根据Chris Bane的回答,我将contentInsetStart设置为0.对于支持库,您将需要使用应用程序名称空间:

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="@dimen/action_bar_height" android:background="?attr/colorPrimary" android:contentInsetStart="0dp" android:contentInsetLeft="0dp" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> </android.support.v4.widget.DrawerLayout> 

我希望这有助于某人,这让我困惑了好几天。

左边的插图是由Toolbar的contentInsetStart引起的,默认是16dp。

将其更改为72dp以alignment到angular线。

更新支持库v24.0.0:

为了匹配材质devise规范,还有一个额外的属性contentInsetStartWithNavigation ,默认情况下是16dp。 如果您还有导航图标,请更改此项。

以上答案是正确的,但仍然有一件事情可能造成问题(至less它确实造成了一个问题)

我使用了以下设置,并且在旧设备上无法正常工作 –

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

诀窍是这里只使用以下 –

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

并摆脱 –

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

现在它应该可以在所有设备上正常工作。

希望它有帮助。

如果有人在这里绊倒…你也可以设置填充 ,例如:

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); int padding = 200 // padding left and right toolbar.setPadding(padding, toolbar.getPaddingTop(), padding, toolbar.getPaddingBottom()); 

contentInset

 toolbar.setContentInsetsAbsolute(toolbar.getContentInsetLeft(), 200); 

简单的在工具栏中添加这两行。 然后我们得到新的删除左侧空间bcoz默认情况下它是16dp。

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

让你的工具栏像:

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/menuToolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="0dp" android:background="@color/white" android:contentInsetLeft="10dp" android:contentInsetRight="10dp" android:contentInsetStart="10dp" android:minHeight="?attr/actionBarSize" android:padding="0dp" app:contentInsetLeft="10dp" app:contentInsetRight="10dp" app:contentInsetStart="10dp"></android.support.v7.widget.Toolbar> 

你需要添加

contentInset

属性添加间距

请按照此链接更多 – Android的提示

一个组合

android:padding="0dp"在工具栏的xml中

mToolbar.setContentInsetsAbsolute(0, 0)在代码中

这对我有效。

这是我所做的,它在每个Android版本上都能正常工作。

toolbar.xml

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="56dp" android:background="@color/primary_color" app:theme="@style/ThemeOverlay.AppCompat" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> <TextView android:id="@+id/toolbar_title" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="16dp" <!-- Add margin --> android:layout_marginStart="16dp" android:gravity="left|center" android:text="Toolbar Title" <!-- Your title text --> android:textColor="@color/white" <!-- Matches default title styles --> android:textSize="20sp" android:fontFamily="sans-serif-medium"/> </android.support.v7.widget.Toolbar> 

MyActivity.java (隐藏默认的工具栏标题)

 getSupportActionBar().setDisplayShowTitleEnabled(false); // Hide default toolbar title 

结果显示的是钥匙

在这里输入图像描述

好吧,如果你需要72dp,你能不能在xml文件中添加填充的区别? 这样你就可以让Android默认的Inset / Padding让他们使用。

所以:72-16 = 56

因此:添加56dp填充,使自己在72dp的缩进/保证金总额。

或者你可以改变Dimen.xml文件中的值。 这就是我现在正在做的事情。 它改变了一切,整个布局,包括在新的适当的Android方式实施的工具栏。

Dimen资源文件

我添加的链接显示了2dp的Dimen值,因为我改变了它,但是默认设置为16dp。 只是FYI …

 ((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0);