androidandroid-fragmentsandroid-popupwindow

Pop up window to display some stuff in a fragment


I am trying to make something like a pop-up window, that would appear when clicked on a view in a fragment. I want this pop-up window or whatever, to not make the fragment dark, like a Dialog Fragment does. And I also want the pop up to be positioned where the view is clicked. Would be good if it has its own activity and layout so I can do some custom changes in it. Can you plese show me some sample code?


Solution

  • The following should work perfect in accordance with your specification. Call this method from inside onClick(View v) of OnClickListener assigned to the View:

    public void showPopup(View anchorView) {
    
        View popupView = getLayoutInflater().inflate(R.layout.popup_layout, null);
    
        PopupWindow popupWindow = new PopupWindow(popupView, 
                               LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    
        // Example: If you have a TextView inside `popup_layout.xml`    
        TextView tv = (TextView) popupView.findViewById(R.id.tv);
    
        tv.setText(....);
    
        // Initialize more widgets from `popup_layout.xml`
        ....
        ....
    
        // If the PopupWindow should be focusable
        popupWindow.setFocusable(true);
    
        // If you need the PopupWindow to dismiss when when touched outside 
        popupWindow.setBackgroundDrawable(new ColorDrawable());
    
        int location[] = new int[2];
    
        // Get the View's(the one that was clicked in the Fragment) location
        anchorView.getLocationOnScreen(location);
    
        // Using location, the PopupWindow will be displayed right under anchorView
        popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY, 
                                         location[0], location[1] + anchorView.getHeight());
    
    }
    

    The comments should explain this well enough. anchorView is the v from onClick(View v).