点击时弹出菜单不弹出。

问题描述 投票:0回答:1

我有这个 ImageButton的内部,它是 Items 我的 Recyclerview 和通常应该调用的 method showPopup 我的计划是,当这个 Imagebutton 被点击后,会有一个 PopupMenu 但不幸的是,事情并不像他们应该的那样工作。我很感激每一个帮助。

<ImageButton
            android:id="@+id/img_btn_more"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="8dp"
            android:background="@android:color/white"
            android:src="@drawable/ic_more"
            android:onClick="showPopup"/>
public void showPopup(View v){
        PopupMenu popup=new PopupMenu(MyApplication.getAppContext(),v);
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem menuItem) {
                switch (menuItem.getItemId()){
                    case R.id.item1: Toast.makeText(MyApplication.getAppContext()," Random text1",Toast.LENGTH_SHORT).show();
                        return true;
                    case R.id.item2: Toast.makeText(MyApplication.getAppContext()," Random text2",Toast.LENGTH_SHORT).show();
                        return true;
                    default: return false;
                }
            }
        });
        popup.inflate(R.menu.popup_menu);
        popup.show();
    }
java android-studio onclick popupmenu
1个回答
1
投票

如果你是在一个RecyclerView中,你将不得不这样做,里面的 ViewHolder并传递构建RecyclerViewAdapter时得到的Context。

holder.*your_image_view*.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
        PopupMenu popup=new PopupMenu(mContext,v);
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem menuItem) {
            switch (menuItem.getItemId()){
                case R.id.item1: Toast.makeText(mContext," Random text1",Toast.LENGTH_SHORT).show();
                    return true;
                case R.id.item2: Toast.makeText(mContext," Random text2",Toast.LENGTH_SHORT).show();
                    return true;
                default: return false;
            }
        }
    });
    popup.inflate(R.menu.popup_menu);
    popup.show();
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.