Место для всплывающей активности
У меня есть активность, которую я хочу показать в виде всплывающего окна.
У меня есть следующий код, но активность отображается в центре. Я хотел бы показать это в другом месте. Возможно, под моей панелью инструментов.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_popup_message);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = 120;
getWindow().setLayout((int) (width * .98), height);
1 ответ
Решение
Вам нужно получить текущее окно просмотра и установить параметры x и y этого окна. Так что он будет установлен в нужном месте.
Ниже приведен пример того, как я установил свой диалог на желаемом месте.
Window window = getWindow();
// set "origin" to top left corner, so to speak
window.setGravity(Gravity.TOP | Gravity.START);
// after that, setting values for x and y works "naturally"
WindowManager.LayoutParams params = window.getAttributes();
params.x =selectedViewWidth;
params.y = selectedViewHeight/2;
window.setAttributes(params);
Я лично думаю, что если вы хотите показать всплывающее окно, то вместо использования активности вы также можете использовать
PopupWindow
или жеDialogFragment
, Вы можете управлять этим управлением более эффективно. Есть так много учебников, доступных для одного и того же.