如何缩小导航图标和工具栏标题之间​​的差距?

How to reduce the gap between navigation icon and toolbar title?

我的问题是 nav-drawer 图标和工具栏标题之间​​的额外 space。示例图片如下:

工具栏的xml视图是

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:titleTextAppearance="@style/Toolbar.TitleText"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

我尝试使用下面的代码解决这个问题,但没有发生任何变化。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    //toolbar.setTitleMarginStart(0);
    toolbar.setTitleMarginStart(-8);
}

有什么办法可以解决这个问题吗?

添加

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

ToolBar

完整代码:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:titleTextAppearance="@style/Toolbar.TitleText"
        app:popupTheme="@style/AppTheme.PopupOverlay"
        app:contentInsetLeft="0dp"
        app:contentInsetStart="0dp"
        app:contentInsetStartWithNavigation="0dp" />

在工具栏中添加app:contentInsetStartWithNavigation="0dp"

添加这一行 app:contentInsetStartWithNavigation="0dp"

 <android.support.v7.widget.Toolbar
                android:id="@+id/share"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:navigationIcon="@drawable/action_back"
                app:popupTheme="@style/AppTheme.PopupOverlay"
                app:title="@{title}"
                android:background="4855b5"
                app:titleTextColor="ffffff"
                style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
                app:titleTextAppearance="@style/Toolbar.TitleText"
                app:contentInsetStartWithNavigation="0dp" />

通过 MaterialToolbarandroidx.appcompat.widget.Toolbar 您可以使用这些属性:

  • contentInsetStartWithNavigation:当存在导航按钮(例如向上按钮)时,栏内内容视图的最小插入(默认值= 72dp).

  • contentInsetStart:栏内内容视图的最小插入。导航按钮和菜单视图除外(默认值 = 16dp

  • titleMarginStart:在工具栏标题的开头指定额外的 space。如果同时指定了此属性和 titleMargin,则此属性优先。边距值应为正数。

只需在您的布局中使用:

    <com.google.android.material.appbar.MaterialToolbar
        app:contentInsetStartWithNavigation="0dp"
        app:titleMarginStart="0dp"
        ..>

默认:

app:contentInsetStartWithNavigation="0dp":

app:contentInsetStartWithNavigation="0dp"app:titleMarginStart="0dp":

您还可以定义自定义样式:

<style name="MyToolbar" parent="....">
    <item name="titleMarginStart">0dp</item>
    <item name="contentInsetStart">..dp</item>
    <item name="contentInsetStartWithNavigation">..dp</item>
</style>

在 Flutter Android 中使用 titleSpacing: 0, 在 ** App Bar** 布局

** 示例代码 **

appBar: AppBar(
    actions: <Widget>[
      Icon(Icons.search_rounded),
      Icon(Icons.notifications),
      Icon(Icons.add_shopping_cart),
    ],
    leadingWidth: 26,
    titleSpacing: 0,
    backgroundColor: Colors.white70,
    leading: Icon(Icons.menu),
    elevation: 100.0,
    iconTheme: IconThemeData(color: Colors.black),
    title: Row(
      mainAxisAlignment: MainAxisAlignment.start,
      children: [
        appbarIcon,
      ],
    ),
  )