不同的Gravity值如何影响Android中的PopupWindow.showAtLocation()?
我找不到有关PopupWindows showAtLocation和Gravity的好文档。
不同的Gravity值如何影响Android中的PopupWindow.showAtLocation()?
我找不到有关PopupWindows showAtLocation和Gravity的好文档。
popupWindow.showAtLocation(anyViewOnlyNeededForWindowToken, Gravity.CENTER, 0, 0);
showAtLocation
方法中的Gravity.CENTER
来更改PopupWindow
的重力:popupWindow.showAtLocation(anyView, Gravity.CENTER, 0, 0);
Gravity.CENTER
Gravity.TOP
Gravity.BOTTOM
Gravity.LEFT
Gravity.RIGHT
Gravity.TOP | Gravity.LEFT
(上左角)Gravity.TOP | Gravity.RIGHT
(上右角)Gravity.BOTTOM | Gravity.LEFT
(下左角)Gravity.BOTTOM | Gravity.RIGHT
(下右角)您可以通过更改(x,y)
偏移量来进一步定位它。
popupWindow.showAtLocation(anyView, gravity, x, y);
popupWindow.showAtLocation(anyView, Gravity.BOTTOM, 0, 300);
以下是上述示例的代码。有关更基本的帮助,请参见如何制作简单的Android弹出窗口。
int gravity = Gravity.CENTER;
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = inflater.inflate(R.layout.popup_window, null);
int width = LinearLayout.LayoutParams.WRAP_CONTENT;
int height = LinearLayout.LayoutParams.WRAP_CONTENT;
boolean focusable = true;
final PopupWindow popupWindow = new PopupWindow(popupView, width, height, focusable);
popupView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
popupWindow.dismiss();
return true;
}
});
popupWindow.showAtLocation(anyView, gravity, 0, 0);
showAsDropDown
。