如果我在 Android 5.0 上向小而宽的 View 添加高度,阴影看起来真的很奇怪。但是,在 Android 5.1 上它看起来还不错。例如,请看下面的比较图像(请单击以全分辨率查看):
在 5.1 上阴影的形状是均匀的,而在 5.0 上它向屏幕边缘变薄。 View 越薄(即越小),效果越明显。
我不确定这是否是任何一个版本上的错误,但是我需要阴影在两个版本上看起来都像现在在 5.1 上的样子。
最佳答案
这是一个 hacky 的部分解决方法。阴影的形状取决于 View 的高度或更准确地说是轮廓的高度。所以我们要像这样设置自定义大纲:
view.setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(final View view, final Outline outline) {
outline.setRect(0, -128, view.getWidth(), view.getHeight());
}
});
而不是 -128
选择任何足够大的数字(或者更好,从资源中加载维度值)。这是它的样子:
不幸的是,这个 hack 导致在 View 上方呈现奇怪的 Artifact 。但是,如果您在其上方有另一个 View (如工具栏),则这些将不可见。也许可以通过将 View 放在单独的布局中并调整其边界来裁剪 Artifact 。
关于android - Android 5.0 上的小而宽 View 的阴影看起来很奇怪,但在 5.1 上却不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32593076/