项目里有个地方用到了PopupWindow
的setElevation()
但是这个方法只支持API21以上,我看有个PopupWindowCompat
,但是里面好像没有什么有用的方法,请问应该如何兼容API21以下的版本呢
项目里有个地方用到了PopupWindow
的setElevation()
但是这个方法只支持API21以上,我看有个PopupWindowCompat
,但是里面好像没有什么有用的方法,请问应该如何兼容API21以下的版本呢
2 回答1.3k 阅读✓ 已解决
2 回答2.6k 阅读
2 回答1.7k 阅读
1 回答2.1k 阅读
1 回答1.1k 阅读
1 回答1.3k 阅读
1.3k 阅读
正常方法是没有的, 但是通过Java反射还是能实现的, 只是实现了, elevation的效果也是出不来的. 先看看Android源码:
从上面的代码, 可以知道只要通过反射获取到
mBackgroundView
, 然后调用ViewCompat.setElevation(View, float)
就算完成工作了. 但是由于低版本是没有elevation属性的, 因此, 上述调用都只是做了兼容处理保证不崩溃而已.另外一种思路:
高版本通过设置elevation
低版本通过
Background Drawable
p.s.为什么不干脆都用
Background Drawable