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
18
A
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)
.
niesamowite, działa do tej pory, ale w jaki sposób sprawić, żeby miał granicę czy coś? –
@ БориславМинчев 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
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ę –