在android中定制RecyclerView上的溢出菜单
我正在关注一个类似的项目: 我已经在我的recyclerView中的每个项目上创建了溢出菜单。菜单已经准备好了。我创建了名为下载的菜单项和另一个名为取消下载的菜单项。大概是这样的: popup.xml(菜单文件夹内) 其中视频菜单是一个图像(三点垂直) 试试这个:在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
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();
}
}