弹出式菜单离开屏幕
Popup menu goes out of the screen
为此 activity,inflate 上的弹出菜单超出屏幕范围,其他
也能正常工作
扩展自定义 AppCompatActivity
样式:
<style name="AppTheme.ActionBar.TransparentContextTranscition" parent="AppTheme.NoActionBar">
<item name="android:windowActivityTransitions">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:itemBackground">@android:color/white</item>
<item name="android:textColor">@android:color/black</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="android:popupMenuStyle">@style/PopupMenu</item>
</style>
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="color">@android:color/white</item>
</style>
<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
<item name="android:popupBackground">@android:color/white</item>
</style>
Java代码
holder.contextMenuView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final PopupMenu popup = new PopupMenu(v.getContext(), v);
popup.inflate(R.menu.song_item_menu_album_inner_layout);
}
});
工具栏扩展菜单工作正常
一个简单但可自定义的 Android 下拉菜单。它支持文本 with/without 图标、分隔符,甚至完全自定义的视图
不幸的是,弹出菜单不遵循其内部视图的大小,超出了范围。我以前有同样的问题。我知道这不是最好的解决方案,但它是这样的:
创建一个假视图,它是透明以使用作为锚点来遮挡边缘从超过。
然而,由于它会浮动,因此您不能将它放在顶部或底部,因此在尝试此操作时要小心超过高度。
另外别忘了设置android:anyDensity="True/False"
在你的代码中使用这个:
final PopupMenu popup = new PopupMenu(v.getContext(), v, Gravity.RIGHT);
如果它不起作用,则更改锚视图 v。因为它可以根据您的要求设置弹出菜单的位置。
我好像在用
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
我的错。 FLAG_LAYOUT_NO_LIMITS,删除上下文菜单的限制。 (这就是原因,上下文菜单超出屏幕),希望对某人有所帮助
您可以允许弹出菜单与锚点视图重叠。
更多信息:
为此 activity,inflate 上的弹出菜单超出屏幕范围,其他
也能正常工作扩展自定义 AppCompatActivity
样式:
<style name="AppTheme.ActionBar.TransparentContextTranscition" parent="AppTheme.NoActionBar">
<item name="android:windowActivityTransitions">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:itemBackground">@android:color/white</item>
<item name="android:textColor">@android:color/black</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="android:popupMenuStyle">@style/PopupMenu</item>
</style>
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="color">@android:color/white</item>
</style>
<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
<item name="android:popupBackground">@android:color/white</item>
</style>
Java代码
holder.contextMenuView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final PopupMenu popup = new PopupMenu(v.getContext(), v);
popup.inflate(R.menu.song_item_menu_album_inner_layout);
}
});
工具栏扩展菜单工作正常
一个简单但可自定义的 Android 下拉菜单。它支持文本 with/without 图标、分隔符,甚至完全自定义的视图
不幸的是,弹出菜单不遵循其内部视图的大小,超出了范围。我以前有同样的问题。我知道这不是最好的解决方案,但它是这样的:
创建一个假视图,它是透明以使用作为锚点来遮挡边缘从超过。
然而,由于它会浮动,因此您不能将它放在顶部或底部,因此在尝试此操作时要小心超过高度。
另外别忘了设置android:anyDensity="True/False"
在你的代码中使用这个:
final PopupMenu popup = new PopupMenu(v.getContext(), v, Gravity.RIGHT);
如果它不起作用,则更改锚视图 v。因为它可以根据您的要求设置弹出菜单的位置。
我好像在用
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
我的错。 FLAG_LAYOUT_NO_LIMITS,删除上下文菜单的限制。 (这就是原因,上下文菜单超出屏幕),希望对某人有所帮助
您可以允许弹出菜单与锚点视图重叠。
更多信息: