如何将工具栏的徽标放在右边?

时间:2015-11-16 12:27:43

标签: android drawable toolbar

我这样做是为了“膨胀”工具栏上的徽标:

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

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

4 个答案:

答案 0 :(得分:8)

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

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

<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。这可以确保添加到工具栏的任何视图(除了导航/折叠图标和菜单项)都在一个矩形中心,从左到右至少72 / 80dp。如果您有更多菜单项并且徽标向左倾斜,则增加。

如果您不想使用XML:

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

答案 1 :(得分:1)

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

<强> RES /菜单/ 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);
}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

`

<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

中定义的布局内执行任何操作