Android PopupWindow предотвращает исчезновение при клике на якорь
У меня есть всплывающее окно, которое показывает AsAsDropDown при нажатии кнопки, и это всплывающее окно имеет setOutsideTouchable(true), и я хочу, чтобы включить или отключить показ всплывающих окон, когда я нажимаю на мою кнопку, но и отключить, когда я нажимаю за пределами всплывающего окна. Проблема в том, что внешнее касание вызывается до нажатия кнопки, а мое всплывающее окно скрывается и отображается после этого. Есть способ сделать это?
ИСПРАВЛЕНО!!!
Я понял, что проблема была в том, что мое всплывающее окно не было сфокусировано, и мне нужно позвонить
popupWindow.setFocusable(true);
починить это.
1 ответ
Решение
Если я правильно понимаю,
// Pop up Window showing
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
popupView = layoutInflater.inflate(R.layout.menu_popup, null);
popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
popupWindow.setOutsideTouchable(true);
// Add setBackgroundDrawable to the pop up window to close the dialog :
popupWindow.setBackgroundDrawable(getResources().getDrawable(
android.R.color.transparent));
popupWindow.setTouchable(true);
используя следующую проверку, вы можете показать всплывающее окно, как вы хотели
findViewById(R.id.topMenu).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
popupWindow
.showAsDropDown(findViewById(R.id.topMenu));
});
Я проверил это. Работает нормально.