Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中定制RecyclerView上的溢出菜单_Android_Android Recyclerview_Android Menu_Overflow Menu - Fatal编程技术网

在android中定制RecyclerView上的溢出菜单

在android中定制RecyclerView上的溢出菜单,android,android-recyclerview,android-menu,overflow-menu,Android,Android Recyclerview,Android Menu,Overflow Menu,我正在关注一个类似的项目: 我已经在我的recyclerView中的每个项目上创建了溢出菜单。菜单已经准备好了。我创建了名为下载的菜单项和另一个名为取消下载的菜单项。大概是这样的: popup.xml(菜单文件夹内) 其中视频菜单是一个图像(三点垂直) 试试这个: popup.getMenu().getItem(0).setVisible(false); 获取菜单实例,获取第一项并使其可见/不可见。尝试以下操作: popup.getMenu().getItem(0).setVisible(fa

我正在关注一个类似的项目:

我已经在我的recyclerView中的每个项目上创建了溢出菜单。菜单已经准备好了。我创建了名为下载的菜单项和另一个名为取消下载的菜单项。大概是这样的:

popup.xml(菜单文件夹内)

其中视频菜单是一个图像(三点垂直)

试试这个:

popup.getMenu().getItem(0).setVisible(false);
获取菜单实例,获取第一项并使其可见/不可见。

尝试以下操作:

popup.getMenu().getItem(0).setVisible(false);

获取菜单实例,获取第一个项目并使其可见/不可见。

似乎您永远不会同时显示“下载”和“取消下载”项目。那么,为什么不制作两个单独的菜单布局,并通过保持下载过程的状态在正确的菜单布局上充气呢。如果有正在进行的下载,只需使用“取消下载”项对版面进行充气,如果没有进行下载,则使用“下载”项对版面进行充气


似乎您永远不会同时显示“下载”和“取消下载”项目。那么,为什么不制作两个单独的菜单布局,并通过保持下载过程的状态在正确的菜单布局上充气呢。如果有正在进行的下载,只需使用“取消下载”项对版面进行充气,如果没有进行下载,则使用“下载”项对版面进行充气

popup.getMenu().getItem(0).setVisible(false);
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/video_download_cancel"
        android:title="Cancel Download"
        android:visible="false"/>
</menu>

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/video_download"
        android:title="Download"/>
</menu>
personViewHolder.video_menu.setOnClickListener(new MyOnClickListener(this));

private final class MyOnClickListener implements View.OnClickListener {
    private final Context mContext;
    private boolean mDownloading = false;
    public MyOnClickListener(Context context) {
        mContext = context;
    }
    @Override
    public void onClick(View v)
    {
        final PopupMenu popup = new PopupMenu(mContext, v);
        if (mDownloading) {
            popup.getMenuInflater().inflate(R.menu.popmenu_canceldownload, popup.getMenu());
        } else {
            popup.getMenuInflater().inflate(R.menu.popmenu_download, popup.getMenu());
        }
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener()
        {
            @Override
            public boolean onMenuItemClick(MenuItem item)
            {
                if (!mDownloading) {
                    Intent intent = new Intent(mContext, Download_Service.class);
                    intent.putExtra("link", urlstring);
                    mContext.startService(intent);

                    MyOnClickListener.this.mDownloading = true;
                } else {
                    // Cancel download
                    MyOnClickListener.this.mDownloading = false;
                }
                return true;
            }
        });
        popup.show();
    }
}