怎么把toolbar的logo放在右边?

How put the logo of toolbar at right?

我这样做是为了 "inflate" 工具栏上的徽标:

toolbar.setNavigationIcon(R.drawable.navigationIcon);
toolbar.getNavigationIcon().setTint(Color.BLUE);
toolbar.setLogo(R.drawable.logo);
toolbar.getLogo().methodForFloatRightHere(); 

是否存在一些不在视图上使用 "inflate" 的简单方法?

除非您以 RTL 模式开发应用程序,否则您必须使用自己的视图才能在右侧显示徽标,我认为这不是您真正想要的。您可以将 RelativeLayout 添加到 XML 中的 toolbar 元素,然后将 ImageView gravity 设置为 RIGHT。

您可以创建一个菜单,其中包含要作为菜单项放在右侧的应用程序图标。

res/menu/main.xml

<?xml version="1.0" encoding="utf-8"?>

<item android:id="@+id/menu_item"
    android:icon="@drawable/ic_application_icon"
    android:title="@string/aplication_icon"
    app:showAsAction="always"/> 

然后使用

给它充气
@Override
public boolean onCreateOptionsMenu(Menu menu){

    getMenuInflater().inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);
}

您可以使用带有嵌套布局的工具栏,您可以在其中根据需要自定义它,而不是使用默认工具栏。例如

`

<LinearLayout
    style="@style/Layout.Wrap"
    android:background="@color/sky_blue_dark"
    android:gravity="center_vertical"
    android:padding="@dimen/fivedp">

    <FrameLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="left|center_vertical"
        android:layout_weight="0.1">

        <ImageView
            android:id="@+id/fragment_title_bar_menu"
            style="@style/Layout.Fill"
            android:src="@drawable/ic_side_menu"
            android:visibility="gone" />

        <ImageView
            android:id="@+id/fragment_title_bar_previous"
            style="@style/Layout.Fill"
            android:src="@drawable/ic_back_selected"
            android:visibility="gone" />
    </FrameLayout>


    <TextView
        android:id="@+id/fragment_title_bar_header"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.8"
        android:gravity="center"
        android:layout_gravity="center_vertical|center_horizontal"

        android:textColor="@color/dark_blue_title_bar"
        android:textSize="@dimen/global_title_text_size"
        android:textStyle="bold"
        android:visibility="gone" />


    <FrameLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"

        android:layout_gravity="right|center_vertical"
        android:layout_weight="0.1">

        <ImageView
            android:id="@+id/fragment_title_bar_popup"
            style="@style/Layout.Fill"
            android:src="@drawable/ic_benefits_popup_icon"
            android:visibility="gone" />

        <ImageView
            android:id="@+id/fragment_title_bar_cart"
            style="@style/Layout.Fill"
            android:src="@drawable/ic_title_bar_cart"
            android:visibility="gone" />

        <ImageView
            android:id="@+id/fragment_title_bar_edit_profile"
            style="@style/Layout.Fill"
            android:src="@drawable/ic_title_bar_edit_profile"
            android:visibility="gone" />

        <ImageView
            android:id="@+id/fragment_title_bar_delete_all"
            style="@style/Layout.Fill"
            android:src="@drawable/ic_delete_all"
            android:visibility="gone" />


    </FrameLayout>
</LinearLayout>

`

通过这种方式,您可以在 ToolBar 中定义的布局中执行任何操作

您可以将自定义视图添加到工具栏。

关键是徽标ImageView上的android:layout_gravity="center"

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?actionBarSize"
    app:contentInsetEnd="@dimen/material_content_keyline"
    app:contentInsetStart="@dimen/material_content_keyline"
    app:navigationContentDescription="@string/abc_action_bar_up_description"
    app:navigationIcon="@drawable/abc_ic_ab_back_mtrl_am_alpha">

    <ImageView
        android:id="@+id/toolbar_logo"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_gravity="center"
        android:adjustViewBounds="true"
        android:src="@drawable/logo"/>
</android.support.v7.widget.Toolbar>

Keyline 在手机上为 72dp,在平板电脑上为 80dp。这确保添加到工具栏的任何视图(除了 navigation/collapse 图标和菜单项)都在一个矩形中居中,距离左右至少 72/80dp。如果您有更多菜单项并且徽标向左倾斜,请增加。

如果你不想使用XML:

mToolbar.addView(mLogo,
    new Toolbar.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT, Gravity.CENTER));