在工具栏上均匀分布的菜单项 [英] Evenly spaced menu items on Toolbar
问题描述
所以,我一直在努力执行 android.support.v7.widget.Toolbar
在我的活动,并使其看起来类似于previously支持拆分动作条。
So I've been trying to implement android.support.v7.widget.Toolbar
in my Activity and to make it look similar to the previously supported split ActionBar.
这里的XML我的工具栏:
Here's the XML for my Toolbar:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_btm"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="@color/toolbar_bkgnd"
android:layout_alignParentBottom="true"
app:theme="@style/ToolBarTheme" />
这里的风格我使用的工具栏:
Here's the style for the Toolbar I'm using:
<style name="ToolBarTheme" parent="Theme.AppCompat">
<item name="actionButtonStyle">@style/ActionButtonStyle</item>
<item name="android:actionButtonStyle">@style/ActionButtonStyle</item>
<item name="android:textColor">@android:color/white</item>
</style>
的样式工具栏菜单按钮,我最初的计划是计算了minWidth
根据屏幕大小,然后将其设置为每个菜单按钮。
The style for the Toolbar menu buttons, my initial plan was to calculate the minWidth
based on the screen size and then set it for each menu button.
<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">
<item name="android:minWidth">56dip</item>
<item name="android:paddingLeft">0dip</item>
<item name="android:paddingRight">0dip</item>
</style>
最后,这里是我打电话给我的活动。
And finally, here is what I'm calling in my activity.
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_btm);
toolbarBtm.inflateMenu(R.id.menu);
现在的问题是,在底部工具栏
菜单项权是这样排列:
The problem is that the menu items in the bottom Toolbar
are right aligned like this:
不过,我希望他们能够均匀分布是这样的:
However I want them to be evenly spaced like this:
推荐答案
这里工作是什么*对我来说:
Here's what worked* for me:
EnhancedMenuInflater.java
EnhancedMenuInflater.java
import android.support.v4.internal.view.SupportMenuItem;
import android.support.v7.internal.view.menu.MenuItemImpl;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import here.is.your.R;
public class EnhancedMenuInflater {
public static void inflate(MenuInflater inflater, Menu menu, boolean forceVisible) {
inflater.inflate(R.menu.menu, menu);
if (!forceVisible) {
return;
}
int size = menu.size();
for (int i = 0; i < size; i++) {
MenuItem item = menu.getItem(i);
// check if app:showAsAction = "ifRoom"
if (((MenuItemImpl) item).requestsActionButton()) {
item.setShowAsAction(SupportMenuItem.SHOW_AS_ACTION_ALWAYS);
}
}
}
}
MainActivity.java
MainActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (toolbar == null) {
EnhancedMenuInflater.inflate(getMenuInflater(), menu, false);
}
return super.onCreateOptionsMenu(menu);
}
// somewhere after views have been set.
if (toolbar != null) {
EnhancedMenuInflater.inflate(getMenuInflater(), toolbar.getMenu(), true);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return onOptionsItemSelected(item);
}
});
}
SplitToolbar.java
SplitToolbar.java
import android.content.Context;
import android.support.v7.widget.ActionMenuView;
import android.support.v7.widget.Toolbar;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
public class SplitToolbar extends Toolbar {
public SplitToolbar(Context context) {
super(context);
}
public SplitToolbar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SplitToolbar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void addView(View child, ViewGroup.LayoutParams params) {
if (child instanceof ActionMenuView) {
params.width = LayoutParams.MATCH_PARENT;
}
super.addView(child, params);
}
}
Layout.xml
Layout.xml
<here.is.my.SplitToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>
当我说我的工作意味着它在我的菜单,文本和图像都为中心的一切。如果您只使用图标你的菜单,然后它会很好看。我仍然在寻找一种方式来集中他们必须是旁边的图标文本。
When I say worked I mean that it centered EVERYTHING in my menu, text and images alike. If you only use icons for your menu then it will look great. I'm still looking for a way to center them and have the text to be right next to the icons.
这篇关于在工具栏上均匀分布的菜单项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!