簡體   English   中英

當我單擊上下文操作欄上的項目時如何插入菜單

[英]How to insert a menu when i click in a item on the contextual action bar

我在應用程序中使用Xamarin Android。 我創建了RecyclerView,並在其中創建了一個上下文操作欄。 我想知道當有人單擊上下文操作欄上的某個項目時如何顯示菜單: https : //i.stack.imgur.com/nQSM0.png

我的上下文操作條形碼:

 public class MyActionMode : Java.Lang.Object, ActionMode.ICallback
    {
        private RecyclerViewHolder holder;
        private Context mContext;
        private RecyclerView.Adapter mAdapter;
        private int currentPosition;
        public MyActionMode(Context context) : this(context, null, 0)
        {

        }

        public MyActionMode(Context context, RecyclerView.Adapter adapter, int position)
        {
            mContext = context;
            mAdapter = adapter;
            currentPosition = position;
        }

        public bool OnActionItemClicked(ActionMode mode, IMenuItem item)
        {
            switch (item.ItemId)
            {
                case Resource.Id.itemOneId:

                    // do Delete
                    // mAdapter.RemoveAt(currentPosition);
                    //mAdapter.FinishActionMode();
                    return true;
                case Resource.Id.itemTwoId:
                    // do Update
                    return true;
                default:
                    return false;
            }
        }

        public bool OnCreateActionMode(ActionMode mode, IMenu menu)
        {
            mode.MenuInflater.Inflate(Resource.Menu.ContextualMenu, menu);

            return true;
        }

        public void OnDestroyActionMode(ActionMode mode)
        {
            mode.Dispose();
        }

        public bool OnPrepareActionMode(ActionMode mode, IMenu menu)
        {
            return false;
        }
    }

您可以檢查此文章哪些做同樣的事情,在Xamarin.Android彈出菜單

很簡單,首先,您創建一個菜單項

<?xml version="1.0" encoding="utf-8" ?>  
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">  
<!--///showAsAction="always" ///-->  
<item android:id="@+id/action_settings" android:title="Share" showAsAction="always" />  
<item android:id="@+id/action_settings1" android:title="Bluetooth" showAsAction="always" />  
<item android:id="@+id/action_settings2" android:title="Exit" showAsAction="always" />  
<!--/android:showAsAction="ifRoom"/-->  
<item android:id="@+id/action_settings3" android:title="Share" android:showAsAction="ifRoom" />  
<item android:id="@+id/action_settings4" android:title="Bluetooth" android:showAsAction="ifRoom" />   
</menu>  

然后在您的活動中覆蓋OnCreateOptionsMenu

public override bool OnCreateOptionsMenu(IMenu menu)  
{  
   MenuInflater.Inflate(Resource.Menu.option_menu, menu);  
   return true;  
}  

查看文章以獲取詳細答案

我發現你發布了另一個主題:

上下文操作欄上的彈出菜單不起作用

我有解決方法,您可以看一下:

首先,您需要更改Contextual菜單,將項目actionviewclass更改為android.widget.Button。

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/itemOneId"

    android:title="Delete"/>
<item android:id="@+id/itemTwoId"
    android:title="Update"
    android:actionViewClass="android.widget.Button"
    />

其次,在OnCreateActionMode中觸發此按鈕單擊事件

 public bool OnCreateActionMode(ActionMode mode, IMenu menu)
    {
        mode.MenuInflater.Inflate(Resource.Menu.ContextualMenu, menu);
        button =(Button)menu.FindItem(Resource.Id.itemTwoId).ActionView;
        button.Background = null;
        button.Text = "UPDATE";
        button.Click += delegate {
            PopupMenu menu1 = new PopupMenu(mContext, button);
            menu1.Inflate(Resource.Menu.popup_menu);
            menu1.Show();
        };
        return true;
    }

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM