Я пытаюсь сделать что-то вроде всплывающего окна, которое появится при нажатии на представление в фрагменте. Я хочу это всплывающее окно или что-то еще, чтобы не сделать фрагмент темным, как это делает фрагмент диалога. И я также хочу, чтобы всплывающее окно было расположено там, где нажимается точка обзора. Было бы хорошо, если бы у него была своя собственная деятельность и макет, поэтому я мог бы сделать некоторые пользовательские изменения в нем. Можете ли вы показать мне пример кода?
Всплывающее окно, чтобы отобразить некоторые фрагменты в фрагменте
Ответ 1
Следующее должно работать идеально в соответствии с вашими спецификациями. Вызовите этот метод из onClick(View v)
OnClickListener
, назначенного для представления:
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());
}
Комментарии должны объяснить это достаточно хорошо. anchorView
- это v
из onClick(View v)
.