2013-08-27 12 views
18

Próbuję utworzyć coś w rodzaju okna podręcznego, które pojawi się po kliknięciu widoku w fragmencie. Chcę, żeby to okienko wyskakujące nie powodowało ciemności fragmentu, tak jak robi to Fragment Dialogu. I chcę również, aby okno było ustawione w miejscu kliknięcia widoku. Byłoby dobrze, gdyby miało swoją własną aktywność i układ, więc mogę wprowadzić w nim pewne niestandardowe zmiany. Czy możesz mi pokazać kod przykładowy?Okno wyskakujące, aby wyświetlić niektóre elementy w fragmencie

Odpowiedz

37

Następujące elementy powinny działać idealnie zgodnie ze specyfikacją. Wywołanie tej metody od wewnątrz onClick(View v) z OnClickListener przypisany Widok:

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

} 

Uwagi należy wyjaśnić dość dobrze. anchorView to v z onClick(View v).

+0

niesamowite, działa do tej pory, ale w jaki sposób sprawić, żeby miał granicę czy coś? –

+1

@ БориславМинчев Cóż, umieść cały układ "popup" wewnątrz 'FrameLayout' z czarnym tłem. Ustaw tło tła "popup" na biały i nadaj mu margines "2dp". – Vikram

+0

Zbyt skomplikowane: D Zrobiłem to z obrazem tła z ramką, a kolor wnętrza przezroczysty jak 70%. tak, powyższe odpowiedzi były tym, co chciałem dziękuję –

Powiązane problemy