更改(减小)工具栏的高度(wrap_content为40dp)后,标题仍为center_vertical,但菜单项偏向底部。怎么修?感谢。
代码:
toolbar.inflateMenu(R.menu.menu_toolbar);
XML :(如果我不改变layout_height =" 40dp ",那么没问题)
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_centerInParent="true"
android:background="?attr/colorAccent"
android:minHeight="?attr/actionBarSize"
app:contentInsetEnd="0dp"
app:contentInsetStart="0dp"
app:titleTextAppearance="@style/Toolbar.TitleText" />
菜单项XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity"
android:gravity="end|center">
<item
android:id="@+id/action_add"
android:icon="@drawable/ic_add_black_24dp"
android:orderInCategory="10"
android:title="添加"
app:showAsAction="always" />
<item
android:id="@+id/action_delete"
android:icon="@drawable/ic_remove_black_24dp"
android:orderInCategory="10"
android:title="删除"
app:showAsAction="always" />
<item
android:id="@+id/action_start"
android:icon="@drawable/ic_play_arrow_black_24dp"
android:orderInCategory="10"
android:title="开启"
app:showAsAction="always" />
<item
android:id="@+id/action_stop"
android:icon="@drawable/ic_stop_black_24dp"
android:orderInCategory="10"
android:title="停止"
app:showAsAction="always" />
</menu>
[工具栏]
答案 0 :(得分:0)
您的问题是工具栏的默认行为。没有正式的api可以将图标设置在垂直中心。
下面的代码是非官方的。
public class CustomToolbar extends Toolbar {
public CustomToolbar(Context context) {
super(context);
}
public CustomToolbar(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public CustomToolbar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
for(int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
if (child instanceof ActionMenuView) {
child.setTop(0); // FIXME: Move child in vertically center to be exact
}
}
}
}
在你的布局中:
<{replace here with package name}.CustomToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorAccent"
... />