Search code examples
androidandroid-recyclerviewandroid-popupwindow

Show popup in recyclerView exactly where the button is, in android


I'm working on a gridLayout with recyclerView in android.I've a an option with each grid Item where I want to show my popup activity which is another class. Please see the image - enter image description here

There is a menu option with each Item. and my popup activity java name is CustomPop.Class. I use a recyclerView for showing gridViews and its holder method is like

    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);

        }
    });
}

By this I can show the popup activity. But the problem is It's appear in the middle of the activity but I want it to open beside the menu option.


Solution

  • as per my above comment you can use Popup Menu

    Android Popup Menu displays the menu below the anchor text if space is available otherwise above the anchor text. It disappears if you click outside the popup menu.

    try this create menu file

    file: 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>  
    

    than use create popup menu like this

    holder.img_chatroom_menu.setOnClickListener(new OnClickListener() {  
    
               @Override  
               public void onClick(View v) {  
                //Creating the instance of PopupMenu  
                PopupMenu popup = new PopupMenu(MainActivity.this, button1);  
                //Inflating the Popup using xml file  
                popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());  
    
                //registering popup with OnMenuItemClickListener  
                popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {  
                 public boolean onMenuItemClick(MenuItem item) {  
                  Toast.makeText(MainActivity.this,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show();  
                  return true;  
                 }  
                });  
    
                popup.show();//showing popup menu  
               }  
              });//closing the setOnClickListener method  
    

    here is the sample demo links how to create pop-up menu in android