在android中,在recyclerView中准确显示按钮所在位置的弹出窗口

在android中,在recyclerView中准确显示按钮所在位置的弹出窗口,android,android-recyclerview,android-popupwindow,Android,Android Recyclerview,Android Popupwindow,我正在用android中的recyclerView制作一个gridLayout。我对每个网格项都有一个选项,我想在其中显示我的弹出式活动,这是另一个类。请看图片- 每个项目都有一个菜单选项。我的弹出式活动java名称是CustomPop.Class。我使用recyclerView来显示GridView,它的holder方法如下 public void onBindViewHolder(ViewHolder holder, int position) { holder.img_c

我正在用android中的recyclerView制作一个gridLayout。我对每个网格项都有一个选项,我想在其中显示我的弹出式活动,这是另一个类。请看图片-

每个项目都有一个菜单选项。我的弹出式活动java名称是CustomPop.Class。我使用recyclerView来显示GridView,它的holder方法如下

    public void onBindViewHolder(ViewHolder holder, int position) {
    holder.img_chatroom_menu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent = new Intent(view.getContext(), ChatroomPopup.class);
            view.getContext().startActivity(intent);

        }
    });
}

通过这个,我可以显示弹出式活动。但问题是它出现在活动的中间,但我希望它在菜单选项旁边打开。

你必须使用弹出式菜单来实现你想要的,正如下面的:

创建一个菜单用户
res>menu>your_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/menu_item_one"
        android:title="Item One" />
    <item
        android:id="@+id/menu_item_two"
        android:title="Item Two" />
</menu>
<style name="popupMenuStyle" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:textColor">@color/colorBlack</item>
        <item name="android:itemBackground">@color/colorWhite</item>
        <!--<item name="android:popupBackground">@android:color/white</item>-->
    </style>
在各自的
RecyclerView适配器中

holder.myAlbumsOptionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Context wrapper = new ContextThemeWrapper(context, R.style.popupMenuStyle);
                final PopupMenu popup = new PopupMenu(wrapper, v, Gravity.END);
                popup.inflate(R.menu.your_menu);

                popup.show();

                popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                        switch (item.getItemId()) {
                            case R.id.menu_item_one:

                                //Do operation if menu_item_one

                                break;
                            case R.id.menu_item_two:

                                //Do operation if menu_item_two

                                break;
                        }
                        return false;
                    }
                });
            }
        });

要了解更多有关

的信息,您必须使用弹出式菜单来实现所需功能,如下所示:

创建一个菜单用户
res>menu>your_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/menu_item_one"
        android:title="Item One" />
    <item
        android:id="@+id/menu_item_two"
        android:title="Item Two" />
</menu>
<style name="popupMenuStyle" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:textColor">@color/colorBlack</item>
        <item name="android:itemBackground">@color/colorWhite</item>
        <!--<item name="android:popupBackground">@android:color/white</item>-->
    </style>
在各自的
RecyclerView适配器中

holder.myAlbumsOptionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Context wrapper = new ContextThemeWrapper(context, R.style.popupMenuStyle);
                final PopupMenu popup = new PopupMenu(wrapper, v, Gravity.END);
                popup.inflate(R.menu.your_menu);

                popup.show();

                popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                        switch (item.getItemId()) {
                            case R.id.menu_item_one:

                                //Do operation if menu_item_one

                                break;
                            case R.id.menu_item_two:

                                //Do operation if menu_item_two

                                break;
                        }
                        return false;
                    }
                });
            }
        });
要了解有关

的更多信息,您可以使用

Android弹出菜单显示锚文本下方的菜单(如果锚文本上方有可用空间)。如果在弹出菜单外单击,它将消失

尝试创建菜单文件

文件:poupup_menu.xml

<menu xmlns:androclass="http://schemas.android.com/apk/res/android" >  

    <item  
        android:id="@+id/one"  
        android:title="One"/>  

    <item  
        android:id="@+id/two"  
        android:title="Two"/>  

    <item  
        android:id="@+id/three"  
        android:title="Three"/>  

</menu>  
以下是示例演示链接,您可以使用

Android弹出菜单显示锚文本下方的菜单(如果锚文本上方有可用空间)。如果在弹出菜单外单击,它将消失

尝试创建菜单文件

文件:poupup_menu.xml

<menu xmlns:androclass="http://schemas.android.com/apk/res/android" >  

    <item  
        android:id="@+id/one"  
        android:title="One"/>  

    <item  
        android:id="@+id/two"  
        android:title="Two"/>  

    <item  
        android:id="@+id/three"  
        android:title="Three"/>  

</menu>  

以下是示例演示链接

使用弹出菜单或弹出菜单写什么?使用弹出菜单或弹出菜单写什么?但如何调整此弹出窗口的大小或自定义?@TanvirDurlove您可以更改菜单以实现一些自定义,如显示图标,但如何调整此弹出窗口的大小或自定义?@TanvirDurlove您可以更改菜单来实现一些定制,比如显示图标那么我可以从这里定制弹出菜单吗?@TanvirDurlove customize menas你能解释更多吗?因为如果我的列表很长,它看起来有点像一个很高的列表。你想在弹出菜单中显示什么?我只想自己手动设置它的高/宽,然后做一个背景。那么我可以从这里自定义弹出菜单吗?@TanvirDurlove customize menas你能解释更多吗?因为如果我的列表很长,它看起来有点像一个很高的列表。你想在弹出菜单中显示什么?我只想自己手动设置它的高度/宽度,然后做一个背景。