Чтобы получить размер основного экрана приложения без таких вещей, как заголовок и панели уведомлений, переопределите следующий метод в классе, генерирующем рассматриваемый экран (размеры измеряются в пикселях):
@Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
}
Чтобы получитьнижняя координата представления, в котором вы хотите отобразить всплывающее окно:
View upperView = ...
int coordinate = upperView.getBottom();
Теперь, пока height - coordinate
достаточно велико для вашего всплывающего представления, вы можете просто разместить всплывающее окно следующим образом:*
PopupWindow popup = new PopupWindow();
Button button = new Button(this);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
popup.showAtLocation(parent, Gravity.CENTER, 0, coordinate);
}
});
Здесь showAtLocation()
принимает родительское представление в качестве аргумента вместе со смещением гравитации и местоположения.