Android API 21工具栏填充

Jam*_*oss 189 android android-toolbar

如何使用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>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我已将所有相关填充设置为0,但Spinner周围仍有填充.我做错了什么或者我需要做些什么才能摆脱额外的填充?

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

根据材料设计规格,旋转器应距离左侧72dp 降序

我需要中和Google为了正确放置我的微调器而放置的填充: 降序

编辑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>
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*nes 272

左侧插图是由工具栏引起的contentInsetStart,默认情况下为16dp.

将其更改为72dp以与keyline对齐.

支持库v24.0.0的更新:

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

  • 通过support-v4:25.0.1将`contentInsetStartWithNavigation`设置为0可以帮到我 (2认同)

Var*_*oid 143

以上答案是正确的,但仍有一件事可能会产生问题(至少它确实给我带来了问题)

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

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
Run Code Online (Sandbox Code Playgroud)

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

app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
Run Code Online (Sandbox Code Playgroud)

并摆脱 -

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
Run Code Online (Sandbox Code Playgroud)

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

希望能帮助到你.

  • 顶部怎么样? (4认同)
  • 不适用于 CollapsingToolBarLayout 。请帮我 。 (2认同)

小智 10

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

android:contentInsetStart="0dp"
app:contentInsetStart="0dp"
Run Code Online (Sandbox Code Playgroud)


wor*_*ked 9

万一其他人偶然发现...你也可以设置填充,例如:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

int padding = 200 // padding left and right

toolbar.setPadding(padding, toolbar.getPaddingTop(), padding, toolbar.getPaddingBottom());
Run Code Online (Sandbox Code Playgroud)

或者contentInset:

toolbar.setContentInsetsAbsolute(toolbar.getContentInsetLeft(), 200);
Run Code Online (Sandbox Code Playgroud)