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

时间:2015-02-12 13:13:04

标签: 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" />

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

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

通过

分配mButtonGravity的位置
mButtonGravity = a.getInteger(R.styleable.Toolbar_buttonGravity, Gravity.TOP);

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

enter image description here

2 个答案:

答案 0 :(得分:12)

我玩了一下并测试了几种组合,可以说按钮的重力和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" />

答案 1 :(得分:4)

如果您想要顶部的图标和底部的标题,您可以尝试这样的事情:

<Toolbar
    android:id="@+id/toolbar"
    android:layout_height="128dp"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:gravity="bottom" />

使用属性android:minHeight作为标准actionBarSize,按钮和操作位于顶部。使用属性android:gravity时,您可以在底部设置标题的位置。