Я использую следующий код, чтобы показать небольшое всплывающее окно:
public static PopupWindow showImportMenu(Activity activity, View anchor, PopupWindowClickListener onClickListener)
{
LayoutInflater inflater = LayoutInflater.from(activity);
PopupImportBinding binding = DataBindingUtil.inflate(inflater, R.layout.popup_import, null, false);
if (!RootTools.isRootAvailable())
binding.llImportRootMethod.setVisibility(View.GONE);
PopupWindow popupWindow = new PopupWindow(activity, null, R.attr.popupMenuStyle);
popupWindow.setFocusable(true);
popupWindow.setContentView(binding.getRoot());
popupWindow.setOutsideTouchable(true);
PopupWindowCompat.showAsDropDown(popupWindow, anchor, 0, 0, Gravity.BOTTOM);
View.OnClickListener clickListener = new View.OnClickListener()
{
@Override
public void onClick(View view)
{
onClickListener.onClick(popupWindow, view);
}
};
binding.llImportDefault.setOnClickListener(clickListener);
binding.llImportRootMethod.setOnClickListener(clickListener);
binding.llImportHTCFromContacts.setOnClickListener(clickListener);
binding.llImportManual.setOnClickListener(clickListener);
return popupWindow;
}
Это работает на множестве устройств, но на некоторых редких устройствах это не работает, например:
- Android 5.1.1 root slim rom
- возможно, другие... до сих пор я не знаю больше о других устройствах
Я получил обратную связь, что всплывающее окно не отображается. Кто-нибудь знает, почему это не работает над вышеупомянутым устройством? И что я могу сделать, чтобы заставить его работать и на этом устройстве?
ИЗМЕНИТЬ
Кажется, что не ясно, что я хочу:
- используйте
showAsDropDown
notshowAtLocation
или подобное, я никогда не видел эту проблему сshowAtLocation
еще - Мое решение работает почти на всех устройствах, похоже, это проблема с телефоном/ромом, возможно, она даже не разрешима, поскольку она также может быть ошибкой в устройстве = > если кто-то знает такую ошибку, говоря меня тоже будет хорошо
- Вместо этого я не хочу использовать диалог (или что-то еще), не отвечающий на мой вопрос. В настоящее время я использую
BottomSheet
, который подходит для меня, но все же я хотел бы знать, может ли проблема быть решена и как-то обработана