扩展工具栏的工具栏按钮重力

Ric*_*ard 6 android android-layout android-support-library android-toolbar

我试图在我的扩展工具栏中设置我的后导航图标的位置,如下所示:

<android.support.v7.widget.Toolbar  xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    app:theme="@style/Toolbar"
    android:minHeight="@dimen/action_bar_height"
    app:buttonGravity="top"
    android:gravity="top"
    android:background="?attr/colorPrimary" />
Run Code Online (Sandbox Code Playgroud)

检查工具栏的来源,我们可以看到以下内容:

private void ensureNavButtonView() {
    if (mNavButtonView == null) {
        mNavButtonView = new ImageButton(getContext(), null,
            R.attr.toolbarNavigationButtonStyle);
        final LayoutParams lp = generateDefaultLayoutParams();
        lp.gravity = GravityCompat.START | (mButtonGravity & Gravity.VERTICAL_GRAVITY_MASK);
        mNavButtonView.setLayoutParams(lp);
    }
}
Run Code Online (Sandbox Code Playgroud)

mButtonGravity通过哪里分配

mButtonGravity = a.getInteger(R.styleable.Toolbar_buttonGravity, Gravity.TOP);
Run Code Online (Sandbox Code Playgroud)

因此,Gravity.TOP如果没有配置,我的工具栏的重力应该已经正确读取.但它看起来像这样:

在此输入图像描述

Ego*_*uba 14

我玩了一下,测试了几个组合,可以说按钮的重力,android:minHeight不想成为朋友.

这应该工作正常:

<android.support.v7.widget.Toolbar  xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_height="@dimen/action_bar_height"
    android:layout_width="match_parent"
    app:theme="@style/Toolbar"
    android:minHeight="?attr/actionBarSize"
    android:gravity="top"
    android:background="?attr/colorPrimary" />
Run Code Online (Sandbox Code Playgroud)

  • +1这是正确的答案.不要让'minHeight`控制你的工具栏,它会搞砸重力测量.始终将"minHeight"设置为默认大小,并将扩展侧设置为布局高度. (5认同)