我如何将溢出菜单放在工具栏下方而不是溢出菜单与应用栏重叠
How I can place overflow menu below toolbar instead of overflow menu to overlaps the app bar
我知道它符合 material 准则,但我不喜欢它,我希望它位于工具栏下方。请提供一些信息来调整溢出菜单的位置。
在您的主要样式中使用 <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
,其中
<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
<!-- Required for pre-Lollipop. -->
<item name="overlapAnchor">false</item>
<item name="android:dropDownVerticalOffset">-4.0dip</item>
<!-- Required for Lollipop. -->
<item name="android:overlapAnchor">false</item>
<item name="android:dropDownVerticalOffset">4.0dip</item>
</style>
Lollipop 样式必须在 values-v21 中。
使用上述解决方案时,我遇到了菜单项背景透明的问题,而且在我单击菜单项之前,它会阻止 window 上的所有操作。对于遇到问题的人,我建议在菜单项中添加一个弹出菜单。例如,我的 menu.xml:
上有这个项目
<item
android:id="@+id/new_work_report"
android:icon="@drawable/ic_add_white"
android:title="@string/action_settings"
app:showAsAction="ifRoom"/>
然后,在我的 OnOptionsItemsSelected 方法上(在将我的菜单膨胀到 activity 之后):
@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{
switch (menuItem.getItemId())
{
case android.R.id.home:
finish();
break;
case R.id.new_work_report:
View itemView = FieldSheetActivity.this.findViewById(R.id.new_work_report);
PopupMenu popMenu = new PopupMenu(MyActivity.this, itemView);
popMenu.getMenu().add("Do something");
popMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener()
{
@Override
public boolean onMenuItemClick(MenuItem item)
{
// Your desired action
return true;
}
});
popMenu.show();
break;
}
return super.onOptionsItemSelected(menuItem);
}
使用此解决方案,菜单选项始终显示在单击的菜单项下方。如果您有任何问题,尽管问我!
我知道它符合 material 准则,但我不喜欢它,我希望它位于工具栏下方。请提供一些信息来调整溢出菜单的位置。
在您的主要样式中使用 <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
,其中
<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
<!-- Required for pre-Lollipop. -->
<item name="overlapAnchor">false</item>
<item name="android:dropDownVerticalOffset">-4.0dip</item>
<!-- Required for Lollipop. -->
<item name="android:overlapAnchor">false</item>
<item name="android:dropDownVerticalOffset">4.0dip</item>
</style>
Lollipop 样式必须在 values-v21 中。
使用上述解决方案时,我遇到了菜单项背景透明的问题,而且在我单击菜单项之前,它会阻止 window 上的所有操作。对于遇到问题的人,我建议在菜单项中添加一个弹出菜单。例如,我的 menu.xml:
上有这个项目<item
android:id="@+id/new_work_report"
android:icon="@drawable/ic_add_white"
android:title="@string/action_settings"
app:showAsAction="ifRoom"/>
然后,在我的 OnOptionsItemsSelected 方法上(在将我的菜单膨胀到 activity 之后):
@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{
switch (menuItem.getItemId())
{
case android.R.id.home:
finish();
break;
case R.id.new_work_report:
View itemView = FieldSheetActivity.this.findViewById(R.id.new_work_report);
PopupMenu popMenu = new PopupMenu(MyActivity.this, itemView);
popMenu.getMenu().add("Do something");
popMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener()
{
@Override
public boolean onMenuItemClick(MenuItem item)
{
// Your desired action
return true;
}
});
popMenu.show();
break;
}
return super.onOptionsItemSelected(menuItem);
}
使用此解决方案,菜单选项始终显示在单击的菜单项下方。如果您有任何问题,尽管问我!