我有一个带有以下菜单项的操作栏;
<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="com.blah.blah.app.ClientActivity" >
<item android:id="@+id/action_search"
android:icon="@drawable/search"
android:title="@string/action_search"
android:orderInCategory="1"
app:showAsAction="ifRoom|withText"/>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="5"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_waiter"
android:title="@string/action_waiter"
android:orderInCategory="6"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_cleantable"
android:title="@string/action_cleantable"
android:orderInCategory="7"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_suggest"
android:title="@string/action_suggest"
android:orderInCategory="8"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_waiterlogin"
android:title="@string/action_waiterlogin"
android:orderInCategory="9"
app:showAsAction="ifRoom"/>
</menu>
问题是我的搜索按钮没有显示在操作栏上但文本显示为溢出。我的行动栏里有足够的空间
我正在使用"@style/Theme.AppCompat.Light"
任何人都可以帮助我吗?
答案 0 :(得分:8)
请尝试使用
android:showAsAction="ifRoom|withText"
代替app:showAsAction="ifRoom|withText"
答案 1 :(得分:4)
在我的情况下,我不得不在onCreateOptionsMenu上添加几行。
Android Studio在使用appCompat时没有让我使用android:showAsAction =“ifRoom”。
app:showAsAction =“ifRoom”无法正常工作,我毫无问题地删除了它。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
for (int i = 0; i < menu.size(); i++) {
menu.getItem(i).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
return super.onCreateOptionsMenu(menu);
}
答案 2 :(得分:1)
如果有其他人遇到同样的问题 - 我无法显示按钮,直到我覆盖onCreateOptionsMenu函数并膨胀菜单(我正在使用com.android.support:appcompat-v7:24.2.1版本)
以下是代码段:
@Override
public boolean onCreateOptionsMenu (Menu menu){
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
return super.onCreateOptionsMenu(menu);
}
答案 3 :(得分:0)
ToolBar(在ActivityBar中)努力不超过一些可见元素。并且该限制低于ToolBar确实可以包含的限制。限制在 android.support.v7.view.ActionBarPolicy 类中设置:
`/**
* Returns the maximum number of action buttons that should be permitted within an action
* bar/action mode. This will be used to determine how many showAsAction="ifRoom" items can fit.
* "always" items can override this.
*/
public int getMaxActionButtons() {
final Resources res = mContext.getResources();
final int widthDp = ConfigurationHelper.getScreenWidthDp(res);
final int heightDp = ConfigurationHelper.getScreenHeightDp(res);
final int smallest = ConfigurationHelper.getSmallestScreenWidthDp(res);
if (smallest > 600 || widthDp > 600 || (widthDp > 960 && heightDp > 720)
|| (widthDp > 720 && heightDp > 960)) {
// For values-w600dp, values-sw600dp and values-xlarge.
return 5;
} else if (widthDp >= 500 || (widthDp > 640 && heightDp > 480)
|| (widthDp > 480 && heightDp > 640)) {
// For values-w500dp and values-large.
return 4;
} else if (widthDp >= 360) {
// For values-w360dp.
return 3;
} else {
return 2;
}
}`
正如您所看到的,限制在2到5之间,这取决于屏幕宽度。因此,如果您想要超出限制,您应该使用 showAsAction =&#34; always&#34; 或为ActionBar创建自己的视图。
答案 4 :(得分:0)
app:showAsAction="ifRoom"
更改为
android:showAsAction="ifRoom|withText"
答案 5 :(得分:0)
您必须拥有一个名称空间才能让app声明正常工作
<menu ......
xmlns:app="http://schemas.android.com/apk/res-auto
用于在您的操作项中使用的app命名空间前缀。