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);