我这样做是为了“膨胀”工具栏上的徽标:
toolbar.setNavigationIcon(R.drawable.navigationIcon);
toolbar.getNavigationIcon().setTint(Color.BLUE);
toolbar.setLogo(R.drawable.logo);
toolbar.getLogo().methodForFloatRightHere();
是否存在一些不在视图上使用“inflate”的简单方法?
答案 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
中定义的布局内执行任何操作