Pha*_*inh 6 android popupwindow android-8.0-oreo
我想在PopupWindow
没有请求的情况下显示所有窗口(例如:另一个弹出窗口,对话框,另一个活动屏幕),SYSTEM_ALERT_WINDOW
所以我使用WindowManager.LayoutParams.TYPE_TOAST
public void showSimplePopupWindow() {
final View popupView = layoutInflater.inflate(R.layout.popup_layout_2, null);
final PopupWindow popupWindow = new PopupWindow(popupView);
...config popup window...
PopupWindowCompat.setWindowLayoutType(popupWindow, WindowManager.LayoutParams.TYPE_TOAST);
popupWindow.showAsDropDown(findViewById(R.id.button_show_popup_window));
}
Run Code Online (Sandbox Code Playgroud)
如果我设置它在所有Android版本中运行良好targetSdkVersion < 26
.
目前,如果我保留上面的代码并将目标更新targetSdkVersion
为26,那么它会因设备api 25-26而异常崩溃android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@859d91f is not valid; is your activity running?
我看到它TYPE_TOAST
已被弃用sdk 26
,他们建议使用TYPE_APPLICATION_OVERLAY
.但是,当我使用时TYPE_APPLICATION_OVERLAY
,AndroidStudio
显示TYPE_APPLICATION_OVERLAY
所需的api 26.因此,TYPE_APPLICATION_OVERLAY
只有设备api 26才能正常工作,对于设备api <26,它会崩溃(即使我已启用Display/Draw over other app
权限)
有没有其他方法可以TYPE_TOAST
与目标一起工作api 26
?任何帮助或建议将非常感谢.
自从:
一种选择是在运行时检查系统版本,并根据其值使用正确的常量。
归档时间: |
|
查看次数: |
697 次 |
最近记录: |