Я сделал пользовательскую клавиатуру. Когда вы долго нажимаете клавишу, PopupWindow
показывает некоторые дополнительные варианты над клавишей. Проблема в том, что в API 28 это всплывающее окно обрезается (или даже полностью скрывается для верхнего ряда).
Я решил эту проблему для API <28 с
popupWindow.setClippingEnabled(false);
Однако с API 28 проблема вернулась. Вот еще код:
private void layoutAndShowPopupWindow(Key key, int xPosition) {
popupWindow = new PopupWindow(popupView,
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
popupWindow.setClippingEnabled(false);
int location[] = new int[2];
key.getLocationInWindow(location);
int measureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
popupView.measure(measureSpec, measureSpec);
int popupWidth = popupView.getMeasuredWidth();
int spaceAboveKey = key.getHeight() / 4;
int x = xPosition - popupWidth / popupView.getChildCount() / 2;
int screenWidth = getScreenWidth();
if (x < 0) {
x = 0;
} else if (x + popupWidth > screenWidth) {
x = screenWidth - popupWidth;
}
int y = location[1] - popupView.getMeasuredHeight() - spaceAboveKey;
popupWindow.showAtLocation(key, Gravity.NO_GRAVITY, x, y);
}
Что-то случилось, что больше не позволяло сторонним клавиатурам показывать контент вне вида клавиатуры? (Это как в iOS.)
Что мне нужно сделать, чтобы PopupWindow
перестало обрезаться?