202

如何使用 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 周围仍有填充。我做错了什么或者我需要做什么来摆脱额外的填充?

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

根据 Material Design 规范,微调器应距左侧 72dp描述

我需要中和谷歌放在那里的填充,以便正确放置我的微调器:描述

编辑 2

根据下面 Chris Bane 的回答,我将 contentInsetStart 设置为 0。对于支持库,您需要使用 app 命名空间:

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

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

4

10 回答 10

290

左插图是contentInsetStart由默认为 16dp 的工具栏引起的。

将此更改为 72dp 以与关键线对齐。

支持库 v24.0.0 的更新:

为了匹配 Material Design 规范,还有一个附加属性contentInsetStartWithNavigation,默认为 16dp。如果您还有导航图标,请更改此设置。

于 2014-10-21T20:42:14.287 回答
147

上面的答案是正确的,但仍有一件事可能会造成问题(至少它确实给我造成了问题)

我使用了以下内容,但它在旧设备上无法正常工作 -

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

诀窍就在这里,只需使用以下 -

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

并摆脱 -

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

现在它应该在所有设备上都能正常工作。

希望能帮助到你。

于 2014-12-05T05:41:16.007 回答
11

Simpley 在工具栏中添加这两行。然后我们得到新删除的左侧空间 bcoz 默认为 16dp。

android:contentInsetStart="0dp"
app:contentInsetStart="0dp"
于 2017-01-02T06:08:47.323 回答
9

万一其他人在这里绊倒......您也可以设置填充,例如:

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);
于 2015-11-17T05:20:49.260 回答
4

的组合

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

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

这对我有用。

于 2016-11-18T22:46:51.073 回答
3

这是我所做的,它在每个版本的 Android 上都能完美运行。

工具栏.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

显示关键线的结果

在此处输入图像描述

于 2015-02-20T15:37:34.410 回答
3

使您的工具栏像:

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

您需要添加

内容插图

添加间距的属性

请点击此链接了解更多信息 - Android 提示

于 2015-09-09T13:00:48.597 回答
2

更新 AndroidX 工具栏:

<!-- TOOLBAR -->
<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:contentInsetStart="0dp">

    <TextView
        style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
        android:id="@+id/toolbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/create_account_title"
        android:textColor="@color/color_dark_grey"/>

</androidx.appcompat.widget.Toolbar>
于 2018-04-04T01:38:23.047 回答
0

好的,如果你需要 72dp,你不能在 xml 文件中添加填充的差异吗?这样,您就可以保留他们希望我们使用的 Android 的默认 Inset/Padding。

所以:72-16=56

因此:添加 56dp 填充以使自己的缩进/边距总计 72dp。

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

点门资源文件

我添加的链接显示了 2dp 的尺寸值,因为我更改了它,但默认设置为 16dp。仅供参考...

于 2015-12-02T06:11:37.687 回答
-2
((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0);
于 2017-05-15T09:22:58.120 回答