弹出菜单退出屏幕

Sai*_*dam 8 user-interface android android-appcompat android-layout android-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>
Run Code Online (Sandbox Code Playgroud)

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);
        }
});
Run Code Online (Sandbox Code Playgroud)

工具栏充气菜单工作正常

在此输入图像描述

Sai*_*dam 8

看起来我正在使用

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

我的错.FLAG_LAYOUT_NO_LIMITS,删除上下文菜单的限制.(这就是原因,上下文菜单走出屏幕),希望对某人有所帮助


Moh*_*xit 5

在您的代码中使用它:

final PopupMenu popup = new PopupMenu(v.getContext(), v, Gravity.RIGHT);
Run Code Online (Sandbox Code Playgroud)

如果它不起作用,则更改锚视图 v. 因为它可以根据您的要求设置弹出菜单的位置。