Трябва да покажа PopupWindow
под едно Views
показано на екрана.
Как мога да изчисля координатите на необходимия View
и да поставя PopupWindow
под него? Примерният код е повече от добре дошъл. Благодаря.
Трябва да покажа PopupWindow
под едно Views
показано на екрана.
Как мога да изчисля координатите на необходимия View
и да поставя PopupWindow
под него? Примерният код е повече от добре дошъл. Благодаря.
имате getLeft()
и getBottom()
, за да получите точната позиция на изгледа в оформлението. Имате също getWidth()
и getHeight()
, за да знаете точното пространство, заето от изгледа. Ако искате да позиционирате изскачащия си прозорец под изглед.
Вие setLeft()
и setTop()
методите на изгледа, за да позиционирате новия изскачащ прозорец.
За да получите размер на основния екран на приложението без неща като заглавие и ленти за уведомяване, заменете следния метод в класа, генериращ въпросния екран (размерите се измерват в пиксели):
@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()
приема родителския изглед като аргумент заедно с отместванията на гравитацията и местоположението.
button
е в средата на екрана. Дори и да задам offset
ръчно, това няма да работи на различни размери на екрана.
- person Eugene; 20.09.2011
button
може да бъде навсякъде.
- person Eugene; 21.09.2011